2017-04-06 308 views
0

我使用Maven JAX-RS版本1.19相对路径

我正在寻找一种方式来获得到相对的路径。

因此,例如:

我的网址:本地主机/ CSS /所有

这个网址去一个控制器的CSS

当我发布以下网址: 本地主机/参数/ anotherparam/css/all

然后我也想去同一个控制器。

我无法真正找到适合我的问题的建议或谷歌的答案。 (搞笑的是#2仍然可以搜索有自己的网站比谷歌更好)

因此,这里是我的问题:

你如何在JAX-RS的相对路径,使得匹配的路径始终遵循不管网址是什么了前(或后)

我的CSS控制器:

@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; 

} 

回答

0

我包括下面的正则表达式来我的道路,使之采取一个参数或并非如此,现在的URL

CSS /所有

/测试/ alsotest/CSS /所有

都成为CSS控制器:

@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; 
} 

请好好偷!

用正则表达式:

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

:|:

{(?![\ S \ S])?参数1:(\ w + /)* ^}

所以对我的完整路径是

参数

{参数1:^ |(\ w + /)*([\ S \ S]?!)?} CSS/{ID}

我想这也是有用的图像和这样的,因他们可以拥有的相对路径,这种方式,调用的位置不是m atter,只有资源的位置!

我想你的想法stackoverflow人在这个话题上。

展望未来!