在解析requestMapping
@PathVariable
值之后,有没有办法获得完整的路径值?
也就是说:/{id}/{restOfTheUrl}
应该能够将/1/dir1/dir2/file.html
解析为id=1
和restOfTheUrl=/dir1/dir2/file.html
任何想法都将不胜感激。
发布于 2010-09-11 01:49:30
URL的不匹配部分被公开为名为HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE
的请求属性
@RequestMapping("/{id}/**")
public void foo(@PathVariable("id") int id, HttpServletRequest request) {
String restOfTheUrl = (String) request.getAttribute(
HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
...
}
发布于 2012-12-19 00:36:03
刚刚发现了与我的问题相对应的问题。使用HandlerMapping常量,我能够为此编写一个小实用程序:
/**
* Extract path from a controller mapping. /controllerUrl/** => return matched **
* @param request incoming request.
* @return extracted path
*/
public static String extractPathFromPattern(final HttpServletRequest request){
String path = (String) request.getAttribute(
HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
String bestMatchPattern = (String ) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
AntPathMatcher apm = new AntPathMatcher();
String finalPath = apm.extractPathWithinPattern(bestMatchPattern, path);
return finalPath;
}
发布于 2016-08-19 09:16:27
这篇文章在这里已经有很长一段时间了,不过还是发了这篇文章。可能对某些人有用。
@RequestMapping( "/{id}/**" )
public void foo( @PathVariable String id, HttpServletRequest request ) {
String urlTail = new AntPathMatcher()
.extractPathWithinPattern( "/{id}/**", request.getRequestURI() );
}
https://stackoverflow.com/questions/3686808
复制相似问题