Перенаправление на настраиваемую страницу ошибок с web.xml и симпатичными лицами

Я столкнулся с интересной проблемой с отображением настраиваемых страниц ошибок пользователю при использовании PrettyFaces.

Итак, в моем веб-приложении я хочу показать симпатичную страницу с котенком и несколько расслабляющих слов на случай, если мое приложение «предоставляет» какое-либо внутреннее неожиданное исключение. Вот часть моего web.xml:

<error-page>
  <error-code>404</error-code>
  <location>/pages/error/404.xhtml</location>
</error-page>
<error-page>
  <error-code>500</error-code>
  <location>/pages/error/500.xhtml</location>
</location>

И я также пробовал общую страницу исключений (без кода ошибки и только с указанием тега location); это тоже не работает. Вместо того, чтобы показывать симпатичного котенка, уродливую ошибку 500 и входящую трассировку стека.

Другое дело, что я использую симпатичные лица. Итак, я попробовал такой трюк:
1) часть моего web.xml

<error-page>
  <error-code>500</error-code>
  <location>/500</location>
</location>

2) часть моего pretty-config.xml

<url-mapping id="404">
  <pattern value="/500" />
  <view-id value="/pages/error/500.xhtml" />
</url-mapping>

Этот трюк был лучше, но все равно не дает того, что я хочу. Теперь он показывает простую пустую белую страницу без ничего; а в консоли браузера я вижу запрошенный URL с кодом ошибки 404 (но файл 500.xhtml существует правильно, я вижу его в собранном .ear).


person Nick    schedule 15.02.2015    source источник
comment
Какую версию PrettyFaces вы используете?   -  person Lincoln    schedule 16.02.2015
comment
Версия @Lincoln PrettyFaces - 2.0.11 Final   -  person Nick    schedule 16.02.2015
comment
Страницы с ошибками не должны быть идемпотентными. Вам лучше сделать шаг назад и исправить свой собственный обработчик исключений как таковой, чтобы он делал то же самое, что и контейнер по умолчанию: перенаправлял на него вместо перенаправления на него.   -  person BalusC    schedule 16.02.2015


Ответы (1)


Не видя вашего приложения, мне было бы трудно понять, что именно происходит. Для этого может быть любое количество причин (например, проблема на самой странице ошибки, которая вызывает последующее исключение, которое скрывается контейнером, потому что он уже находится в состоянии ошибки).

Я бы проверил, не создается ли второе исключение при доступе к странице 500, так как это обычная проблема для страниц исключений, которые имеют какие-либо функции.

Если вам нужна дополнительная помощь, создайте ветку на http://ocpsoft.org/support/, загрузите пример приложения, которое воспроизводит это, и мы сможем изучить его подробнее.

person Lincoln    schedule 16.02.2015