Как в приложении Jboss Seam как убедиться, что каждое исключение приводит к пользовательской странице ошибки? - PullRequest
3 голосов
/ 19 ноября 2010

В моем файле pages.xml уже объявлено следующее:

<exception> 
    <http-error error-code="500" />
</exception>

, а в моем файле web.xml:

<error-page>
    <error-code>500</error-code>
    <location>/error500.html</location>
</error-page>

Тем не менее иногда при возникновении исключения яполучить страницу отладки, даже когда в производстве.Я прочитал здесь , что когда возникает исключение во время фазы RENDER_RESPONSE, перенаправление не может произойти, так как ответ уже отправляется.У меня есть два вопроса:

  • Как определить, было ли вызвано исключение на этом этапе?
  • Можно ли отобразить пользовательскую страницу ошибки независимо от того, где выдается исключение?Если да, то как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 21 ноября 2010
1 голос
/ 22 ноября 2010

Если вы получаете страницу отладки в рабочем состоянии, это означает, что вы неправильно установили для debug значение false.

Если вы используете Facelets, вы должны также не забыть установить для debug Facelets значение false.

<context-param>
    <param-name>facelets.DEVELOPMENT</param-name>
    <param-value>false</param-value>
</context-param>

Так же, как и

<core:init debug="false" jndi-pattern="somepattern"/>

Теперь Init.instance().isDebug() должно приводить к false

Чтобы получить каждое исключение по умолчанию на странице ошибки, напишите это в pages.xml

<exception>
    <redirect view-id="/error.xhtml">
        <message severity="error">Error</message>
    </redirect>
</exception>
1 голос
/ 19 ноября 2010

Я думаю, вам нужно установить для debug значение false в компонентах. Xml

<core:init debug="false" jndi-pattern="n2/#{ejbName}/local"/>

...