我正在尝试创建一个可以使用springs控制器建议注释处理所有异常的控制器。
下面是我为此创建的类。
@EnableWebMvc
@ControllerAdvice
public class GlobalDefaultExceptionHandler {
private static final Logger LOGGER = Logger.getLogger(GlobalDefaultExceptionHandler.class);
@ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
LOGGER.debug("Handling Exception!");
return new ModelAndView(new CustomError("<Error Message>"));
}
}
当引发任何未处理的异常时,将调用方法defaultErrorHandler,但它似乎向浏览器返回404错误,而不是返回视图CustomError。有人知道为什么会这样吗?
CustomError类在下面
public class CustomError {
private String errorMessage;
public CustomError(String errorMessage) {
this.errorMessage = errorMessage;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
}
谢谢。
最佳答案
似乎您使用了错误的ModelAndView,所用的类似乎是org.springframework.web.portlet.ModelAndView
,其中有常量ModelAndView(java.lang.Object)
您应该使用的类org.springframework.web.servlet.ModelAndView
没有接受Object的构造函数。
相应地更改导入和代码,就可以了