2014-10-29 49 views
0

我的服務代碼:如何獲得請求的URI的一部分進入路徑變量Spring MVC中的REST服務

@RequestMapping(value = "/projects/{projectId}/resources/web/{path}", method = RequestMethod.GET) 
@ResponseBody 
public void getWebFileContent(@PathVariable("projectId") String projectId,@PathVariable("path") String path, HttpServletRequest httpServletRequest) throws Exception { 
} 

而且我的要求會

  • /項目/ PRO1 /資源/網絡/ src目錄/主/ web應用
  • /項目/ PRO1 /資源/網絡/ src目錄/主/測試/ COM/PRO1 ...

,並有可能得到「的src/main/webap P/../.....」進入 「路徑」 變量

回答

1

春天的URL處理程序映射

  • 提供三種模式? - 零個或一個性格特徵
  • * - 一個性格特徵
  • ** - 一個或多個charecters

而且下面的方法解決了我的問題

@RequestMapping(value = "/projects/{projectId}/resources/web/**", method = RequestMethod.GET) 
@ResponseBody 
public void getWebFileContent(@PathVariable("projectId") String projectIdHttpServletRequest httpServletRequest) throws Exception { 
    String path = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); 
    // will get path = /projects/pro1/resources/web/src/main/webapp 
    String bestMatchPattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); 
    // will get bestMatchPattern = /projects/pro1/resources/web/** 
    AntPathMatcher apm = new AntPathMatcher(); 
    String exactPath = apm.extractPathWithinPattern(bestMatchPattern, path); 
    // will get exactPath = src/main/webapp 
    ..... 
} 

任何其他方法都讚賞....

相關問題