OnPAGE A
是一个包含数据库中一些数据的表。
通过单击一行,页面将被转发到PAGE B
控制器中,实体将被注入
@DataModelSelection(value = ENTITY_LIST_NAME)
@Out(value = ENTITY_NAME, scope = ScopeType.CONVERSATION, required = false)
private Entity entity;
这可以正常工作。
问题是,我们的用户似乎使用了书签PAGE B
,所以实体永远不会被注入,因为他们从未访问过PAGE A
所以他们总是抛出这个异常
@In attribute requires non-null value
是否有一个全局函数来捕获所有@In attribute requires non-null value
异常并将用户转发到PAGE C
(起始页)?
(当然我可以捕捉到这个执行,PAGE B
但这不仅发生在一个页面上,我们希望在每一页上处理这个异常)
我们正在使用:jboss5 + jsf 1.2 + seam 2
在 EmirCalabuch 回答后更新:
我还尝试了 EmirCalabuch 的提示:
<page conversation-required="true" no-conversation-view-id="PageC.xhtml" />
但问题是,此刻对话是活跃的,这种转发pageC
永远不会发生......
我还在page.xml
这个页面中做了类似的事情:
<action execute="#{controller.checkIfEntityIsSet()}" />
<navigation>
<rule if-outcome="HOME">
<redirect
view-id="/pages/home.xhtml"
/>
</rule>
</navigation>
在我的Controller.java
我有这样的事情:
public String checkIfEntityIsSet(){
if(getEntity() == null){
return "HOME";
}
return "";
}
但这checkIfEntityIsSet()
从来没有被调用过,因为@In attribute requires non-null value
之前抛出过......所以这根本没有帮助......