Как настроить Spring HandlerExceptionResolver для обработки NullPointerException, брошенного в JSP? - PullRequest
10 голосов
/ 13 октября 2008

Из jsp выдается исключение NullPointerException, например, с использованием <% null.toString(); %>

Это исключение не обрабатывается HandlerExceptionResolver, но выбрасывается в веб-контейнер (tomcat) и преобразуется в code 500 error.

Как я могу настроить Spring для получения этой ошибки в моем HandlerExceptionResolver?

подробности:

  • Spring может быть сконфигурирован для обработки исключений, генерируемых внутри контроллеров, но не исключений, создаваемых представлением.
  • Конечно, я могу разрешить исключение NullPointerException, но я хочу разработать решение, которое изящно решит любую возможную проблему в веб-приложении, чтобы отобразить удобное для пользователя сообщение пользователю.

Ответы [ 2 ]

6 голосов
/ 21 октября 2008

См. Интерфейс HandlerInterceptor . Вам понадобится метод afterCompletion. Затем вы можете перехватить ответ, а затем установить соответствующую информацию заголовка для перенаправления на веб-страницу ошибки, настроенную контейнером. Вы правы, что Spring не имеет этой функциональности, это должно быть указано в файле web.xml, который определяет, какие коды соответствуют каким страницам.

1 голос
/ 13 октября 2008

Я не работал с этим конкретным фрагментом весеннего каркаса, но в документах написано

"Интерфейс, который должен быть реализован объектами, которые могут разрешать исключения, возникающие при отображении или выполнении обработчика, в типичном случае для представлений об ошибках. Разработчики обычно регистрируются как компоненты в контексте приложения.

Представления ошибок аналогичны JSP страниц ошибок, но могут использоваться с любым типом исключения, включая любое проверенное исключение, с потенциально точным отображением для определенных обработчиков. "

так что я представляю, что, учитывая, что NullPointer расширяет RuntimeException, платформа не предназначена для его перехвата. Есть ли причина, по которой исключение (я) не может быть обработано в контроллере напрямую?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...