我想要的是:
我想为HTTP 404错误页面提供一个模型.而不是写一个在web.xml中指定的静态错误页面,我想使用一个
异常控制器,它处理HTTP 404错误.
我做了什么:
从web.xml中删除了错误页面标记:
<error-page>
<error-code>404</error-code>
<location>/httpError.jsp</location>
</error-page>
并在我的AbstractController类中实现了以下异常处理程序方法:
@ExceptionHandler(NoSuchRequestHandlingMethodException.class)
public ModelAndView handleNoSuchRequestException(NoSuchRequestHandlingMethodException ex) {
ModelMap model = new ModelMap();
model.addAttribute("modelkey", "modelvalue");
return new ModelAndView("/http404Error", model);
}
@ExceptionHandler(NullPointerException.class)
public ModelAndView handleAllExceptions(NullPointerException e) {
ModelMap model = new ModelMap();
model.addAttribute("modelkey", "modelvalue");
return new ModelAndView("/exceptionError", model);
}
什么是:
它可以查找异常,但不能查找HTTP错误代码状态404.默认情况下,DispatcherServlet似乎会处理HTTP 404错误.是否有可能改变这种行为?
如何在异常处理程序中捕获404错误?
最佳答案 如果要在404页面或任何其他错误页面中获取一些动态内容,请将页面映射到弹簧上下文中的控制器.
例如,声明一个名为“404.htm”的控制器并尝试请求页面/404.htm以确保它正常工作,
然后在你的web.xml中写下以下内容:
<error-page>
<error-code>404</error-code>
<location>/404.htm</location>
</error-page>