【问题标题】:JSF redirect to another bean from bean methodJSF 从 bean 方法重定向到另一个 bean
【发布时间】:2012-11-19 23:53:08
【问题描述】:

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

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

页面 A --> 按钮“查看详细信息”与 BeanOne.getDetail() 绑定 -- 范围是会话。

BeanOne.getDetail()

处理请求 - 调用后端方法获取详细信息 - if (type == XYZ) 然后调用 BeanTwo.getTypeXYZ() 并根据为 BeanTwo.getTypeXYZ() 定义的导航规则重定向 - else 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>

【问题讨论】:

    标签: jsf


    【解决方案1】:

    您是否尝试在faces-config.xml 中使用navication-rule

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

    【讨论】:

      猜你喜欢
      • 2014-04-01
      • 2016-02-21
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多