JSFページにはレスポンスをレンダリングするためのBean属性への参照があるため、JSFページをレンダリングする前に別のBeanと登録されたBean属性を呼び出す必要があるシナリオがあります。
そのようなシナリオを実装するための最良のオプションを探しています。理解を深めるために、必要なシナリオを疑似コードの形式で表現しようとしました。
ページ A --> BeanOne.getDetail() でバインドされた「View Detail」ボタンがあります -- スコープはセッションです。
BeanOne.getDetail()
リクエストを処理する - バックエンド メソッドを呼び出して詳細を取得する - (type == XYZ) の場合は BeanTwo.getTypeXYZ() を呼び出し、BeanTwo.getTypeXYZ() に定義されたナビゲーション ルールに従ってリダイレクトする - それ以外の場合 (type == RST) の場合は呼び出すBeanThree.getTypeRST() および BeanThree.getTypeRST() に定義されたナビゲーション ルールに従ってリダイレクトする
BeanTwo.getTypeXYZ()
- リクエストを処理する
- バックエンド メソッドを呼び出して詳細を取得する
- this.attributeB = バックエンド メソッドから返される値を設定します。
- ページ B に移動
BeanTwo.getTypeRST()
- リクエストを処理する
- バックエンド メソッドを呼び出して詳細を取得する
- this.attributeC = バックエンド メソッドから返される値を設定します。
- ページ C に移動
ナビゲーションルールにビーンメソッド名を持つようなもの
<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>