Что я хочу:
Я хочу предоставить модель для страницы ошибки 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. Похоже, что ошибки HTTP 404 по умолчанию обрабатываются DispatcherServlet. Можно ли изменить это поведение?
А как я могу отловить 404 ошибки в моем обработчике исключений?