私はデータグリッドコンポーネントを持っています:
<h:form id="myForm">
<h:panelGroup id="statementDataContent" layout="block">
[... some controlls ...]
<p:dataGrid id="dg" columns="#{statementDataRequestAction.columnCount}" var="statement"
value="#{statementDataRequestAction.data}" rowIndexVar="#{statement.id}" >
<p:column>
<p:panelGrid columns="1" >
[... some controlls ...]
<p:commandButton value="-" immediate="true" type="submit" actionListener="#{statementDataRequestAction.remove(statement)}" process="@form" update="??? " />
</p:panelGrid>
</p:column>
</p:dataGrid>
ご覧のとおり、現在のアイテムを削除するためのボタンがあります。Beanを正しく呼び出し、メソッドはグリッドの背後にあるアイテムをリストから削除します。データグリッドも更新されますが(表示される列の数が1つ減るのがわかります)、グリッド要素内の値は更新されません。
コードの中で、私は熱心に書いた??? 次のような数十のオプションを試したからです。
- グリッドの更新:、、
dg
など:myForm:dg
。 - フォーム全体を更新する:
@form
、、、:myForm
など:myForm:statementDataContent
。 - 内のフィールドを更新しますが、対処するのは困難です
p:remoteCommand
使用やp:collector
*などのいくつかのエキゾチックなものでも
私のBeanはSessionScopeにあります(変更できません)。
そして私の問題を理解するのを助けるために:この開始状態を想像してください:
データグリッドに3つのアイテムがあります。次に、左端(最初)のアイテムの削除ボタンを押します。ログには、適切な要素がバッキングコレクションから削除されたことが示されています。
Remove statement: 4 - StatementDataWrapper [id=4, data=Entity: 16 - hu.avhga.entities.StatementData, year=1000]
===============Removed: true :
[StatementDataWrapper [id=5, data=Entity: 17 - hu.avhga.entities.StatementData, year=1010], StatementDataWrapper [id=6, data=Entity: 18 - hu.avhga.entities.StatementData, year=1020]]
また、次のスクリーンショットは、その後の結果を示しています。
ご覧のとおり、グリッドは表示するアイテムが2つしかないことを検出しましたが、表示された2つは最初の2つです。
足りなくなったので、ヒントを教えてください。:-(
前もって感謝します!
バラージ