非常にパラメータ化可能で動的な webapp があります。Mojarra 2.1.19 および Primefaces 3.5 で JSF 2 を使用しています。
コンポーネントとは、高レベルのコンポーネント、つまり xhtml ファイルに関連付けられた backbean を意味します。xhtml テンプレート内のバッキング Bean の EL 名は常に「comp」です。
私が実装した機能は次のとおりです。
- コンテナー コンポーネント (タブ、パネルなど) があり、その中のコンポーネントをレンダリングできるようにしたいと考えています。コンテナーは、ユーザー アクションと構成ファイルを通じて動的に供給され、コンテナーが含まれるコンポーネントとその数を予測する方法はありません。
- コンポーネント「A」は、コンポーネント ツリー内の位置に関係なく、ハード カップリングなしでコンポーネント「B」を更新できます。コンポーネント "A" はコンポーネント "B" を認識していません。コンポーネント "A" は、コンポーネント "B" によって実装された機能を更新する必要があることだけを認識しています。
コンポーネント パターンを使用すると、コンポーネント ツリーを使用して高レベルのアプリケーションを構築できます。実際に c:forEach パターンを使用してコンポーネントを動的に追加します。
<c:forEach items="#{comp.values}" var="value">
<ui:include src="#{value.uri}">
<ui:param name="comp" value="#{value}"/>
</ui:include>
</c:forEach>
コンポーネントをリンクするために汎用チャネル メッセージを使用します。リフレッシュするには、バインディングを使用します
次のすべてのパターンが一貫性のない状態を作成し、恐れられている重複 ID 例外をスローする可能性があることを読みました。
- c:forEach
- セッションのバインド
- Java を使用してコンポーネントを追加する
私はいつも地雷原の上を歩いているような気がします。今、私は厄介な重複IDエラーに悩まされています。
動的および汎用コンポーネントを JSF 2 に追加するための堅牢なパターンを作成する方法はありますか?
ご回答有難うございます!