jsp / spring-mvc исключение на render - как получить пользовательскую страницу ошибки и записать в журнал исключение

Если в сервисе или контроллере возникает исключение, то оно обрабатывается пружинными резольверами HandlerExceptionResolvers. Однако если в обработке .jsp происходит исключение (например, - PropertyNotFoundException, происходит даже с помощью JSTL), то пружина не проходит через свой механизм обработки исключений. Более того, это не считается ошибкой 500, поэтому конфигурация не учитывается

, вместо этого исключение передаётся в контейнер сервлета. Что нормально, но на самом деле я не могу получить желаемое поведение:

  • show a (500) error page
  • log the exception

My current setup:

  • the 500.jsp has isErrorPage=true
  • all jsps include a common file, which has <%@ page errorPage="500.jsp" %>

What happens is - the exception is not recorded anywhere. А страница ошибки не показывается. Вместо этого запрашиваемая страница показывается полуудаленной. Если я увеличу размер буфера (достаточно, чтобы дойти до проблемного места в коде), то только тогда будет показана страница ошибки. (опять же, без протоколирования)

Итак, как мне добиться того, что я хочу? Без изменения размера буфера, без использования , и без ex.printStackTrace() в странице ошибки)

5
задан Bozho 20 September 2011 в 21:41
поделиться