3

私はデータグリッドコンポーネントを持っています:

<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つです。

足りなくなったので、ヒントを教えてください。:-(

前もって感謝します!

バラージ

4

1 に答える 1