1

我的环境是:NetBeans7.2.1、GlassFish3.1、JSF2 和 Weld 1.1.0。

当会话时间到期时,我想重定向到 error.xhtml 页面。在 web.xml 中,我添加了以下代码:

<error-page>
    <exception-type>org.jboss.weld.context.NonexistentConversationException</exception-type>
    <location>/error.xhtml</location>
</error-page>

但后来我得到这个异常错误:

WARNING: org.apache.catalina.core.StandardHostValve@365f4aa6: Exception Processing ErrorPage[exceptionType=org.jboss.weld.context.NonexistentConversationException, location=/error.xhtml]
javax.servlet.ServletException: WELD-000321 No conversation found to restore for id 1

当我使用名为 ErrorHandler 的 Servlet 侦听器在 web.xml 中使用此代码捕获此异常时:

<error-page>
    <exception-type>org.jboss.weld.context.NonexistentConversationException</exception-type>
    <location>/ErrorHandler</location>
</error-page>

它工作正常,我从那里重定向到 error.xhtml。

我需要该位置直接通过 web.xml 工作(而不是通过 servlet)。

我尝试将xhtml页面更改为html,它仍然无法正常工作,但异常不同:

WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces     Servlet threw exception
 org.jboss.weld.context.NonexistentConversationException: WELD-000321 No conversation found to restore for id 1

我还尝试将位置的根更改为/faces/error.xhtml,但它仍然不起作用。

可能是什么问题呢?如何从 web.xml 重定向到页面?

提前致谢。

4

1 回答 1

0

您需要向nocidURL 添加参数,因为您的错误原因是 CDI 正在向error.xhtml页面发送不存在的对话 ID。所以尝试跟随

<error-page>
    <exception-type>org.jboss.weld.context.NonexistentConversationException</exception-type>
    <location>/error.xhtml?nocid=true</location>
</error-page>

更多信息在这里

于 2013-10-23T07:52:51.913 回答