【问题标题】:Primefaces 3.4 Datatable doesn't refresh correctly after delete rowPrimefaces 3.4 删除行后数据表无法正确刷新
【发布时间】:2013-10-24 06:27:19
【问题描述】:

我创建了一个每行都有一个删除按钮的组件。单击删除按钮时,将调用确认对话框,并在对话框上单击“是”时,将删除该行。

表格刷新,但在 UI 上删除了错误的行。在 bean 上,正确的记录被删除。在 UI 方面,无论您选择删除哪一行,删除的行始终是最后一行。

Delete 按钮位于数据表本身中,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>

【问题讨论】:

  • 尝试缩小用例,仔细检查每个行项目是否有唯一的 id,确保相关 id 被删除,然后仔细检查它是否从项目列表中删除...使用system.out ....
  • 您好丹尼尔,感谢您的建议。但是,因为我已经验证它在后端 bean 中有效,所以我怀疑它与缓存或数据表的类似方面更相关。这个想法有效吗?
  • 只显示你的数据表代码p:datatable...表中没有缓存,也可以尝试删除立即数并使用action="#{myBean.myDeleteMethod(item)}"替换f:setPropertyActionListener
  • 是的,通过删除立即 = true。谢谢!

标签: primefaces datatable


【解决方案1】:

显示你的数据表代码,只有p:datatable...

表中没有缓存,也尝试删除immediate并使用action="#{myBean.myDeleteMethod(item)}"替换f:setPropertyActionListener

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 2017-06-28
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多