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