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

JSF从bean方法重定向到另一个bean,jsf,Jsf,我有一个场景,在呈现JSF页面之前,我必须调用另一个bean并注册bean属性,因为JSF页面引用bean属性来呈现响应 我正在寻找实现这种场景的最佳选择。为了更好地理解,我尝试以伪代码的形式表示所需的场景 页面A->have button View Detail bind with BeanOne.getDetail-作用域为session BeanOne.getDetail 处理请求 -调用后端方法以获取详细信息 -如果type==XYZ,则调用BeanTwo.getTypeXYZ并根据为B

我有一个场景,在呈现JSF页面之前,我必须调用另一个bean并注册bean属性,因为JSF页面引用bean属性来呈现响应

我正在寻找实现这种场景的最佳选择。为了更好地理解,我尝试以伪代码的形式表示所需的场景

页面A->have button View Detail bind with BeanOne.getDetail-作用域为session

BeanOne.getDetail

处理请求 -调用后端方法以获取详细信息 -如果type==XYZ,则调用BeanTwo.getTypeXYZ并根据为BeanTwo.getTypeXYZ定义的导航规则重定向 -否则,如果type==RST,则调用BeanThree.getTypeRST并根据为BeanThree.getTypeRST定义的导航规则重定向

BeanTwo.getTypeXYZ

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

处理请求 调用后端方法以获取详细信息 设置this.attributeC=从后端方法返回的值。 导航到C页 类似于在导航规则中使用bean方法名

A页 {beanOne.getDetail} xyz {beanTwo.getTypeXYZ} {beanOne.getDetail} rst {beanTwo.getTypeRST}

您是否尝试在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");
}