【问题标题】:Configure error page for @PathVariable type mismatch为@PathVariable 类型不匹配配置错误页面
【发布时间】:2013-03-15 11:24:50
【问题描述】:

假设我有一个控制器:

@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”路径变量类型不正确时才会显示的错误页面?

【问题讨论】:

    标签: java spring servlets custom-error-pages


    【解决方案1】:

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

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

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

    很像带有@RequestMapping 注解的标准控制器方法,@ExceptionHandler 方法的方法参数和返回值非常灵活。

    【讨论】:

    • 很老的帖子,我喜欢。 ypu 是否碰巧知道如何将动态消息传递给@ExceptionHandler?例如,默认值是(对于这种特殊情况),“无法将 'java.lang.String' 类型的值转换为所需的 'int' 类型;嵌套异常是 java.lang.NumberFormatException:对于输入字符串:\”k\ “”。我该怎么做:对于这种情况,“请使用大于零的数字”,而对于另一种情况,请使用“请使用字母”?
    猜你喜欢
    • 2014-02-05
    • 2013-01-16
    • 2018-06-08
    • 1970-01-01
    • 2012-02-16
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多