如何在Spring MVC异常处理程序中访问@PathVariable?

时间:2012-02-18 08:56:38

标签: java spring spring-mvc

做这样的事情是否有效:

@RequestMapping(method = RequestMethod.POST)
public @ResponseBody Post doSomething(@PathVariable postId) {

}

@ExceptionHandler(Exception.class)
private ModelAndView handleException(Exception ex, @PathVariable postId) {

}

当我向其方法签名添加@PathVariable时,看起来Spring忽略了我的异常处理程序。

3 个答案:

答案 0 :(得分:1)

IMO无论如何都应该将这类信息包含在例外中。

我不知道异常处理程序获取路径变量。

答案 1 :(得分:0)

@ExceptionHandler方法确实不支持@PathVariable。但是在Spring 3.1中,您应该能够使用PathVariableMethodArgumentResolver配置ExceptionHandlerExceptionResolver,并且应该能够使它工作。随意在JIRA打开一张票,这似乎是我们可以添加的。

答案 2 :(得分:0)

也许是这样吗? (控制器中的一种方法)

private Optional<String> getPathVariable(String paramName) {
   return Optional.ofNullable((Map<String, String>) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE))
         .filter(map -> map.containsKey(paramName))
         .map(map -> map.get(paramName));
}