在Jboss Seam应用程序中,如何确保每个异常都会导致自定义错误页面?

时间:2010-11-19 18:16:50

标签: java jsf jboss java-ee seam

我已经在pages.xml中声明了以下内容:

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

这在我的web.xml中:

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

但是,有时当抛出异常时,我会得到调试页面,即使在生产中也是如此。我读here,当在RENDER_RESPONSE阶段抛出异常时,由于响应已经发送,因此不会发生重定向。我有两个问题:

  • 如何确定在此阶段是否抛出异常?
  • 无论抛出异常的位置,都可以显示自定义错误页面吗?如果是这样,我该如何表达呢?

3 个答案:

答案 0 :(得分:2)

我建议你阅读文章Unified error page and exception handling

答案 1 :(得分:1)

我认为你需要在components.xml中将debug设置为false

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

答案 2 :(得分:1)

如果您在生产中获得调试页面,则表示您未正确将调试设置为false。

如果您正在使用facelets,您还必须记住将facelets debug设置为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>