我有一个场景,我必须在呈现JSF页面之前调用另一个bean并注册bean属性,因为JSF页面引用了bean属性以呈现响应。
我正在寻找实施此类方案的最佳选择。我试图以伪代码的形式表示所需的场景,以便更好地理解。
第A页 - >有“查看详细信息”按钮与BeanOne.getDetail()绑定 - 范围是会话。
BeanOne.getDetail()
处理请求 - 调用后端方法来获取详细信息 - if(type == XYZ)然后根据为BeanTwo.getTypeXYZ()定义的导航规则调用BeanTwo.getTypeXYZ()并重定向 - 否则if(type == RST)然后根据为BeanThree.getTypeRST()定义的导航规则调用BeanThree.getTypeRST()和重定向
BeanTwo.getTypeXYZ()
BeanTwo.getTypeRST()
类似于导航规则中的bean方法名称
<navigation-rule>
<from-view-id>Page A</from-view-id>
<navigation-case>
<from-action>#{beanOne.getDetail}</from-action>
<from-outcome>xyz</from-outcome>
<to-view-id>#{beanTwo.getTypeXYZ}</to-view-id>
</navigation-case>
<navigation-case>
<from-action>#{beanOne.getDetail}</from-action>
<from-outcome>rst</from-outcome>
<to-view-id>#{beanTwo.getTypeRST}</to-view-id>
</navigation-case>
</navigation-rule>
答案 0 :(得分:0)
您是否尝试在navication-rule
faces-config.xml
<navigation-rule>
<navigation-case>
<from-outcome>XYZ</from-outcome>
<to-view-id>pageB.xhtml</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>RST</from-outcome>
<to-view-id>pageC.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
豆中的
getTypeXYZ() {
...
NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
nh.handleNavigation(facesContext, null, "XYZ");
}