モハラ 2.1.21
コメントに基づいて質問を更新しました。コンポーネントがサーバー セッション Bean にバインドされている状況が 2 つあります。(情報を含む追加のリンク: Binding attribute cause duplicate component ID found in the view and https://stackoverflow.com/a/12512672/2692917 )
バージョン 1:
シングル.xhtml:
<h:outputText value=... binding="#{mysessionbean.out}" />
ジャワ:
@SessionScoped @Named public class Mysessionbean {
UIOutput out;
//getter and setter ....
}
バージョン 2:
template.xhtml:
<h:outputText value=... binding="#{mysessionbean.out}"
view1.xhtml:
<ui:composition template="template.xhtml" />
view2.xhtml:
<ui:composition template="template.xhtml" />
ジャワ:
@SessionScoped @Named public class Mysessionbean {
UIOutput out;
//getter and setter ....
}
バージョン 1 で問題ありません。(少なくとも、これまでのところエラーは発生していません)。しかし、バージョン 2 では、あるページから別のページに移動すると、ID の重複エラーが発生します。なぜそれが起こるのですか?(リクエスト スコープの) コンポーネント (バージョン 1) をセッション スコープのバインディングで使用しても安全ですか? 考慮すべき別のユースケースはありますか?
編集: 機能要件1:
ビューで Primefaces データテーブルを使用したい。このデータテーブルからの情報が必要です。(選択された行または行インデックスなど)。したがって、データテーブルをバインドすると、この情報を取得するのに役立ちます。
機能要件 2:
複合コンポーネント内のコンポーネント バインディング。それらは、セッション スコープの Bean にバインドされます。(主に 1 つのページで使用されますが、別のページで使用するとどうなるでしょうか?
要件 3
「バージョン2」のような状況。プライムフェイス メニューとセッション スコープのバインディングを含むテンプレート。このために、EL-Binding を使用しました。