Отправить ошибку 500 для любого исключения JSP - PullRequest
0 голосов
/ 29 марта 2012

У меня есть страница JSP с небольшим количеством EL внутри. К сожалению, EL выражения вызывает исключение. В результате пользователь видит половину страницы, а система регистрирует исключение и отправляет мою электронную почту.

Можно ли настроить контейнер (tomcat) для обработки сначала страницы jsp, а затем отобразить ее пользователю и отобразить страницу ошибки 500 в случае какого-либо исключения?

Ошибка страницы намного лучше, чем частично отображаемой страницы.

Да, я знаю, что шаблонизатор должен обрабатывать viewmodel, который не должен создавать ничего, кроме аксессоров / мутаторов и никаких исключений, но сейчас мне нужно получить доступ к некоторым бизнес-объектам (модели предметной области) в EL.

Ответы [ 3 ]

1 голос
/ 30 марта 2012

Оценка выражений EL не должна вызывать исключения.

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

Код предварительной обработки (читай: сервлет фронт-контроллера) должен быть абсолютно уверен, что любые данные, к которым страница должна получить доступ / представить, уже находятся в области видимости.Методы getter, на которые ссылаются выражения EL, не должны делать ничего, кроме простого возврата уже подготовленного / загруженного свойства.

0 голосов
/ 31 марта 2012

Вы можете настроить страницу ошибки 500 для своего приложения с помощью web.xml.

<error-page>
    <error-code>500</error-code>
    <location>/WEB-INF/error-pages/500.jsp</location>
</error-page>

Поместите это в <web-app>...</web-app> файла web.xml.Для любого серверного исключения он перенаправит пользователя на 500.jsp страницу

0 голосов
/ 30 марта 2012

Вы можете использовать тег JSTL

<c:catch> 

.Пример:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
 <c:catch var="exp">
             ${.}
 </c:catch>
 <c:if test="${exp != null}" >
      Expection was thrown in EL
 </c:if>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...