如何在自定义HandlerMethodArgumentResolver中访问路径变量

Jav*_*Fan 4 java spring-mvc

考虑到这个Spring MVC处理程序方法:

  @RequestMapping(value = "/profile/{id}", method = RequestMethod.GET)
  public String displayProfile(Person person, ModelMap model) { ... }
Run Code Online (Sandbox Code Playgroud)

我的问题:我是否可以访问id此解析程序中的值而无需手动解析URl:

public class PersonReslover implements HandlerMethodArgumentResolver { .. }
Run Code Online (Sandbox Code Playgroud)

Kan*_*nti 15

使用NativeWebRequest引用,可以从HandlerMethodArgumentResolver的resolveArgument()方法访问.

例如:

 private Map<String, String> getPathVariables(NativeWebRequest webRequest) {

    HttpServletRequest httpServletRequest = webRequest.getNativeRequest(HttpServletRequest.class);
    return (Map<String, String>) httpServletRequest.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
}
Run Code Online (Sandbox Code Playgroud)