我已经搜索了这个主题并尝试了所有建议,但是我似乎无法让看似非常简单的事情起作用。
我有一个 PrimeFaces 3.4 ,其中的数据是从我的支持 bean 中的<p:dataTable>
a 填充的,并且每一行的其中一个列中都有 a 。我只是想实现数据表的简单删除和刷新。但是,尽管从对象中删除了元素,但数据表不会刷新。List
<p:commandLink>
List
Bean(查看范围):
public void deleteRow(rowType row){
this.tableDataList.remove(row);
}
看法:
<h:form id="form">
<p:dataTable id="dt" var="dt" value=#{managedBean.tableDataList}
rowKey="#{dt.id}" selection="#{managedBean.selectedRow}"
selectionMode="single">
<p:column><h:outputText value="#{dt.field1}"/></p:column>
<p:column><h:outputText value="#{dt.field2}"/></p:column>
<p:column><h:outputText value="#{dt.field3}"/></p:column>
<p:column width="60">
<p:commandLink id="deleteCl"
value="Delete"
actionListener="#{managedBean.deleteRow(dt)}"
update=":form:dt"
/>
</p:column>
</h:form>
据我所知,PrimeFaces 3.4 中的数据表应该可以通过命令链接等子组件进行更新,但我就是无法让它工作。我实现了一个阶段侦听器,因此我可以看到在渲染响应阶段之前没有验证或其他错误,但是除非我刷新浏览器窗口,否则数据表会继续显示已删除的行,然后它将消失。
如果我ajax="false"
在命令链接中设置它可以工作,但是整个页面会被不必要地更新。
我努力了:
action
在和之间切换actionListener
- 以各种组合对命令链接属性进行以下更改:
process="@this"
update="@this"
update="@form"
令人讨厌的是,我有一个带有命令链接的类似表,其中每个链接都会打开一个对话框窗口,其中包含另一个数据表,该数据表填充了根据最初单击的行检索到的数据。在同一页面上完美运行。啊!