2

假设我有一个控制器:

@Controller

public class SomeController {

    @RequestMapping(value = "{id}/object.do")
    public String showObject(@PathVariable("id") Integer id,
                            HttpServletRequest request) {
            //do smth
            return "somePage";
        }
}

当“id”不是数字,而是像“aaa/object.do”这样的字符串时,Tomcat 会显示一个错误 - “客户端发送的请求在语法上不正确。”

有没有办法配置仅当“id”路径变量类型不正确时才会显示的错误页面?

4

1 回答 1

4

您可以使用@ExceptionHandler处理此特定错误(我怀疑它是TypeMismatchException

@ExceptionHandler(TypeMismatchException.class)
public ModelAndView handleTypeMismatchException(TypeMismatchException ex) {
    //TODO log
    // Return something reasonable to the end user.
    ...
}

请注意,@ExceptionHandler与通常的处理程序一样,它基本上具有几乎相同的功能:

与使用 @RequestMapping 注解注解的标准控制器方法非常相似,@ExceptionHandler 方法的方法参数和返回值非常灵活。

于 2013-03-15T11:38:47.443 回答