Spring @ControllerAdvice 异常处理程序返回 404 错误而不是视图
Spring @ControllerAdvice exception handler returning 404 error instead of view
我正在尝试创建一个可以使用弹簧控制器建议注释处理所有异常的控制器。
下面是我为此创建的 class。
@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 被调用,但它似乎 return 浏览器 404 错误而不是 return 视图 CustomError。有人知道为什么会这样吗?
CustomError class 如下
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,您使用的 class 似乎是 org.springframework.web.portlet.ModelAndView
,它具有构造函数 ModelAndView(java.lang.Object)
你应该使用的 class org.springframework.web.servlet.ModelAndView
没有接受 Object 的构造函数。
相应地更改导入和代码,你应该没问题
我认为,存在运行时异常,
无法处理
@ExceptionHandler(value = Exception.class)
。
也请post你的控制器方法。
我正在尝试创建一个可以使用弹簧控制器建议注释处理所有异常的控制器。
下面是我为此创建的 class。
@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 被调用,但它似乎 return 浏览器 404 错误而不是 return 视图 CustomError。有人知道为什么会这样吗?
CustomError class 如下
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,您使用的 class 似乎是 org.springframework.web.portlet.ModelAndView
,它具有构造函数 ModelAndView(java.lang.Object)
你应该使用的 class org.springframework.web.servlet.ModelAndView
没有接受 Object 的构造函数。
相应地更改导入和代码,你应该没问题
我认为,存在运行时异常,
无法处理
@ExceptionHandler(value = Exception.class)
。
也请post你的控制器方法。