Spring mvc 3:如何在拦截器中获取路径变量?
问题描述:
在Spring MVC控制器中,我可以使用@PathVariable获取路径变量以获取在@RequestMapping中定义的变量的值。我如何在拦截器中获取变量的值?Spring mvc 3:如何在拦截器中获取路径变量?
非常感谢!
答
,已经超过1今年也晚,但:
String[] requestMappingParams = ((HandlerMethod)handler).getMethodAnnotation(RequestMapping.class).params()
for (String value : requestMappingParams) {...
应该帮助
+0
这对于检索RequestParams似乎很有用,但我不明白如何使用这种方法获得PathVariables的值 – chrismarx
答
保黄挂线工作一种享受,我
在preHandle()方法,你可以提取各种PathVariables通过运行以下代码
Map pathVariables = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
答
这是什么你在找什么?
ConfigClass extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HandlerInterceptor() {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("Request Url: " + request.getRequestURL().toString()+ "?" + request.getQueryString());
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// TODO Auto-generated method stub
}
});
super.addInterceptors(registry);
}
}
其实上面的@ashario(http://*.com/a/23468496/35274)的答案表明它可以完成。 – Philippe