@ExceptionHandler 适用于 spring-mvc 中的所有控制器

2024-04-21

我编写了以下控制器来处理代码中的所有异常:

@Controller
public class ErrorHandlerController {

    @ExceptionHandler(value = Exception.class)
    public String redirectToErrorPage(Model model){
        model.addAttribute("message", "error on server");
        return "errorPage";
    }
}

但看起来只有在内部抛出异常时以下异常处理程序才会起作用ErrorHandlerController

我有大量的控制器。请告诉我如何为所有控制器编写一个 ExceptionHandler ?

P.S.

我知道我可以使用继承,但我不确定这是最好的决定。


更改注释控制器的方式@控制器 to @ControllerAdvice这将使其成为全局异常处理程序

文档说

默认行为(即,如果在没有任何选择器的情况下使用), @ControllerAdvice 注解的类将协助所有已知的控制器。

另外,你必须将你的方法更改为类似的方法

@ExceptionHandler(value = Exception.class)
public ModelAndView redirectToErrorPage(Exception e) {
    ModelAndView mav = new ModelAndView("errorPage");
    mav.getModelMap().addAttribute("message", "error on server");
    return mav;
}

要了解为什么model使用 @ExceptionHandler 注释的方法中的参数未解析,请查看更深入的一部分http://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc http://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@ExceptionHandler 适用于 spring-mvc 中的所有控制器 的相关文章

随机推荐