2017-04-06 6 views
0

Ich verwende Maven JAX-RS-Version 1.19Relative Pfad in JAX-RS

ich für eine Art und Weise bin auf der Suche nach einem Weg zu erhalten, die relativ ist.

So zum Beispiel:

Meine url: localhost/css/all

Diese URL geht an einen Controller für die CSS

Wenn ich die folgende URL eingeben: localhost/Parameter/anotherparam/css/all

Dann möchte ich auch zum gleichen Controller gehen.

Ich konnte nicht wirklich eine Antwort passend zu meiner Frage in den Vorschlägen oder auf Google finden. (Komisch, dass Stackoverflow noch dort eigene Website besser als Google-Suche können)

So, hier ist meine Frage:

Wie Sie einen relativen Pfad in Jax-RS machen, so dass der Weg, der immer passt folgt egal, was die uRL vorne (oder zurück)

meine CSS Controller:

@Path("/css") 
@Singleton 
public class CssController{ 

    @GET 
    @Path("{id}") 
    public Response getCss(@Context HttpServletRequest request, @PathParam("id") String id 
     String path = request.getServletContext().getRealPath("/css/"+id+".css"); 

     File f = new File(path); 
     if (f.exists()) { 
      return Response.ok(new Viewable(path)).build(); 
     } 
     return null; 

} 

Antwort

0

ich die folgende regex zu meinem Pfad enthalten, um einen Parameter dauern, oder nicht so jetzt die URL

css/alle

und

/test/alsotest/css/all

gehen beide auf die CSS-Controller:

@Singleton 
@Path("{param1 : ^(?![\\s\\S])|(\\w+/)*?}css/{id}") 
public class CssController { 

    @GET 
    @Produces(MediaType.TEXT_HTML) 
    public Response getCss(@Context HttpServletRequest request, @PathParam("id") String id) 
    { 
     String path = request.getServletContext().getRealPath("/css/"+id+".css"); 

     File f = new File(path); 
     if (f.exists()) { 
      return Response.ok(new Viewable(path)).build(); 
     } 
    return null; 
} 

Bitte stehlen Sie gut!

mit regex:

^| (\ w + /) * ([\ s \ S]?!)?

in Parameter:

{param1:^| (\ w + /) * ([\ s \ S]?!)?}

so der vollständige Pfad ist für mich:

{param1:^| (\ w + /) * ([\ s \ S]?!)?} css/{id}

ich denke, dies auch für Bilder und eine solche ist nützlich, aufgrund der relative Pfad, den sie haben können, auf diese Weise, Standort des Anrufens ist nicht m atter, nur der Standort der Ressource!

Ich möchte die Gedanken von Ihnen stackoverflow Menschen zu diesem Thema.

Wir freuen uns!