我有一个场景,我必须在呈现 JSF 页面之前调用另一个 bean 并注册 bean 属性,因为 JSF 页面引用了 bean 属性来呈现响应。
我正在寻找实现这种情况的最佳选择。为了更好地理解,我尝试以伪代码的形式表示所需的场景。
页面 A --> 按钮“查看详细信息”与 BeanOne.getDetail() 绑定 -- 范围是会话。
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 方法名称
<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>