3

刷新对话期间显示的页面时出现错误。如何避免这个错误?

情况:

我有 2 个 JSF 页面,index.xhtml 和 age.xhtml。

index.xhtml 包含用户输入生日的表单(支持 bean“bean”的属性)。当用户提交表单时,age.xhtml 根据生日显示年龄。

表单通过重定向提交:

<h:commandButton value="Submit" action="#{bean.computeAge()}" />

计算年龄方法:

conversation.begin();
return "age?faces-redirect=true";

两个页面都使用相同的支持 bean“bean”。这个支持 bean 有一个对话范围。

页面年龄.xhtml:

Your age: #{bean.age} years

getAge 方法:

if (!conversation.isTransient()) {
  conversation.end();
}
return ejb.computeAge(birthdate);

一切都很好,除非我刷新age.xhtml。然后我收到此错误消息:WELD-000321 No conversation found to restore for id 3

刷新前后浏览器显示的URL: http://localhost:8080/tpjsf1/faces/age.xhtml?cid=3

问题来自最后的 cid=3 。用户刷新age.xhtml时是否可以避免错误页面?

4

1 回答 1

0

The error occurs as you are ending the conversation in the getAge method. In your case the conversation should end when you navigate back to the index page. In order to handle the non existent conversation exception, add the below tags to the web xml. This will redirect the exception to the mentioned page.

<error-page>   
    <exception-type>org.jboss.weld.context.NonexistentConversationException</exception-type>   
    <location>/my-foo-bar-exception-page.xhtml</location>   
</error-page>
于 2014-10-31T17:31:35.653 回答