0
我創建了一個每行都有一個刪除按鈕的組件。點擊刪除按鈕時,將調用confirmDialog,並在對話框中單擊「是」時,該行將被刪除。Primefaces 3.4 Datatable在刪除行後無法正確刷新
表刷新,但在UI上刪除了錯誤的行。在bean上,正確的記錄被刪除。在UI端,刪除的行始終是最後一行,無論您選擇刪除哪一行。
刪除按鈕位於數據表本身中,並且confirmDialog位於數據表外,但位於同一表單中。
有誰知道什麼是錯的?
<p:commandButton icon="ui-icon ui-icon-trash"
update="@form"
oncomplete="del_confirmation.show()"
value="Delete"
immediate="true">
<f:setPropertyActionListener value="#{item}"
target="#{Bean.recToDelete}"/>
</p:commandButton>
<p:confirmDialog widgetVar="del_confirmation"
message="Confirm Delete?"
header="Delete Dialog" showEffect="explode"
hideEffect="explode" modal="true">
<div align="center">
<p:commandButton id="delBtn"
icon="ui-icon ui-icon-check"
value="Yes"
actionListener="#{Bean.deleteRecord()}"
update="@form"
oncomplete="del_confirmation.hide()"
immediate="true"
ajax="true" />
<p:commandButton
icon="ui-icon ui-icon-cancel"
value="No"
onclick="del_confirmation.hide()" />
</div></p:confirmDialog>
盡力縮小使用更換
f:setPropertyActionListener
的情況下,仔細檢查每一行項目都有一個唯一的ID,確保相關的ID正在被刪除,之後再次檢查它是否從項目列表中刪除...使用system.out .... – Daniel嗨丹尼爾,謝謝你的建議。但是,因爲我已經驗證了它在後端bean中的作用,我懷疑它與數據表的緩存或類似方面更相關。這是否有效? –
只顯示數據表代碼'p:datatable' ...表中沒有緩存,也可以嘗試刪除直接並使用'action =「替換'f:setPropertyActionListener''{{myBean.myDeleteMethod(item) }「' – Daniel