JSF从bean方法重定向到另一个bean

时间:2012-12-02 08:18:44

标签: jsf

我有一个场景,我必须在呈现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()

  • 处理请求
  • 调用后端方法获取详细信息
  • 设置this.attributeB =从后端方法返回的值。
  • 导航至第B页

BeanTwo.getTypeRST()

  • 处理请求
  • 调用后端方法获取详细信息
  • 设置this.attributeC =从后端方法返回的值。
  • 导航至第C页

类似于导航规则中的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>

1 个答案:

答案 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");
}