私はこの構造を持っています:
<h:dataTable id="baselist">
<h:dataTable id=childlist">
<p:commandLink update="should only update childlist">
</h:dataTable>
</h:dataTable>
考えられることはすべて試しましたが、childlist
が見つからないというエラーしか表示されません。このまま更新できないのでしょうか?
childlist データテーブルの ID にはインデックス番号が含まれていることに注意してください。
例えば。:
親テーブルの最初の行にある子リスト テーブルの ID は次のとおりです。:form:baselist:0:childlist
親テーブルの 2 行目にある childlist テーブルの ID は次のとおりです。:form:baselist:1:childlist
親テーブルの 3 行目にある childlist テーブルの ID は次のとおりです。:form:baselist:2:childlist
等々...
解決:
親テーブルを更新して、すべての行の子リスト テーブルを含め、すべてが更新および同期されるようにします。
例えば。
update=":form:baselist"
未実現:
ブラウザでレンダリングされたページを右クリックし、ページのソースを表示すると、要素の完全修飾 ID を確認できます。
使ってみることはでき#{component.parent.clientId}
ますが、思ったほどの効果は得られません。
JSF は通常、構造全体を再構築します。回答を参照してください。
さらに、 を変更した場合、ネーミング コンテナ ID の一貫性が失わbaselist
れるため、問題が発生します。:0,:1
たとえば、最初の要素を から削除するとbaselist
、JSF はビューを新しい ID で再構築します。などに:form:baselist:1:childlist'
なります。:form:baselist:0:childlist
エラーが発生するかどうかはわかりませんが、遅かれ早かれ何らかの問題が発生することは確かです。