私は次の構造を持っています(コンテンツと属性は省略されています):
<ui:repeat id="outerlist">
<my:compositeComponent id="myCC">
<h:panelgroup id="container">
Some content here (outputText, etc.)
<ui:repeat id="innerlist">
<h:commandButton>
<f:ajax render=":#{cc.clientId}:container" />
<!-- all closing tags accordingly -->
コンテナ内のコンテンツは内部リストのボタンのアクションに依存するため、更新する必要があります。上記のアプローチは、外部がない場合に機能しui:repeat
ます。ただし、存在する場合はcomponent not found
エラーで失敗します。
これは、cc.clientId
then自体に外部の行インデックスが含まれてui:repeat
いるためと思われouterlist:0:myCC:container
ます。この回答へのコメントが示すように、このインデックス付きIDは、ビューツリーのサーバー側の表現では使用できません。代わりに、「行インデックスはクライアント側にのみ存在します」。このインデックス作成がどのように行われ、サーバー側で何が利用できるのかを完全には理解していないことを認めなければなりません。
だから私の質問は:JSFはこのインデックスをどのように行うのか、(サーバー上で)どのように内部のさまざまな「インスタンス」を分離するui:repeat
のか、そして上記のコードで達成しようとしていることの解決策はありますか?