Если исключение происходит в сервисе или контроллере, оно обрабатывается Springler HandlerExceptionResolvers.Однако, если в обработке .jsp есть исключение (например - PropertyNotFoundException
, происходит даже с JSTL), то Spring не пропустит это через механизм обработки исключений.Более того, это не считается ошибкой 500, поэтому конфигурация <error-page>
не учитывается
Вместо этого исключение распространяется на контейнер сервлета.Это нормально, но на самом деле я не могу получить желаемое поведение:
- показать страницу ошибки (500)
- записать исключение
Моя текущая настройка:
- 500.jsp имеет
isErrorPage=true
- все jsps включают в себя общий файл, который имеет
<%@ page errorPage="500.jsp" %>
Что происходитесть - исключение нигде не записано.И страница ошибки не отображается.Вместо этого запрошенная страница отображается наполовину отрендеренной.Если я увеличу размер буфера (достаточно, чтобы добраться до проблемного фрагмента кода), только тогда отобразится страница с ошибкой.(опять же, без регистрации)
Итак, как мне добиться того, чего я хочу?Без изменения размера буфера, без использования <c:catch>
и без ex.printStackTrace()
на странице ошибок)