2017-04-06 341 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人在這個話題上。

展望未來!