Spring MVC 3: Как обеспечить динамическое содержимое страницы ошибок для ошибок HTTP 404? - PullRequest
4 голосов
/ 05 апреля 2011

Что я хочу:

Я хочу предоставить модель для страницы ошибки 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 ошибки в моем обработчике исключений?

Ответы [ 2 ]

2 голосов
/ 17 июля 2012

Если вы хотите получить динамический контент на вашей странице 404 или на любой другой странице с ошибкой, сопоставьте страницу с контроллером в контексте Spring.Например, объявите контроллер с именем «404.htm» и попробуйте запросить страницу /404.htm, чтобы убедиться, что он работает нормально, затем в своем файле web.xml напишите следующее:

<error-page>
    <error-code>404</error-code>
    <location>/404.htm</location>
</error-page>
0 голосов
/ 11 ноября 2015

Попробуйте с этим URL-адресом http://blog.codeleak.pl/2013/04/how-to-custom-error-pages-in-tomcat.html

Объясняется, как создать контроллер для получения ошибки и установки параметров для их отображения в .jsp.

...