【问题标题】:How to return ModelAndView Object from @ControllerAdvice class?如何从 @ControllerAdvice 类返回 ModelAndView 对象?
【发布时间】:2020-02-27 22:53:19
【问题描述】:

我正在尝试处理来自 Spring MVC 控制器的异常,但我遇到了问题。

我的句柄返回 ModelAndView 对象,但 Spring 不使用它。

在调试时,我看到 Spring 在浏览器中打开了带有标准 Spring 错误消息的页面,然后运行了 GlobalControllerExceptionHandler 中存在的方法。为什么在进入控制器之前不先调用该方法?

我有这个代码:

@Slf4j
@ControllerAdvice(annotations = Controller.class)
public class GlobalControllerExceptionHandler {
    @ExceptionHandler(Exception.class)
    public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) {
        log.warn("Enter to handle method");
        ModelAndView mav = new ModelAndView("exception");
        mav.addObject("errorType", "errorType.toString()");
        mav.addObject("exception", "rootCause");
        mav.addObject("message", e.getMessage());
        return mav;
    }
}

【问题讨论】:

    标签: spring spring-mvc


    【解决方案1】:

    今天,它突然起作用了。我通过 application.properties 中的以下设置解决了这个问题:

    server.error.whitelabel.enabled=false
    spring.mvc.throw-exception-if-no-handler-found=true
    server.error.include-exception=true
    server.error.path=
    

    我还创建了一个 error.html 文件,如果错误未在我的 ExceptionHandler 中捕获,则 thymeleaf 使用该文件(我不知道为什么......)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 2011-03-26
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多