後不更新我有一個DataGrid組件:Primefaces的數據網格的內容刪除項目
<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,該方法從列表中刪除了該項目的內容。 DataGrid甚至刷新(我可以看到顯示的列的數量減少了一個),但不是網格元素內的值。
在代碼中,我特意寫了?因爲我嘗試了幾十個選項,包括:
- 刷新網格:
dg
,:myForm:dg
等 - 刷新整個表格:
@form
,:myForm
,:myForm:statementDataContent
等 - 內刷新領域,但很難解決這些問題
- 甚至有些奇異的東西,比如使用
p:remoteCommand
或p:collector
*
我的bean在SessionScope中(不能更改它)。
爲了幫助理解我的問題:想象一下這樣的起始狀態:
我在DataGrid三個項目。現在我按下最左邊(第一個)項目的刪除按鈕。日誌告訴正確的元素從底層集合中刪除:
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]]
此外,下面的屏幕截圖顯示的結果之後:
正如你所看到的,網格現在檢測只顯示兩個項目,但顯示的兩個項目是前兩個項目。
請給我一些提示,因爲我用光了。 :-(
提前感謝!
巴拉熱