我有一个数据表。表中的每一行都有一个commandButton称为 “删除” ,这是为了从模型和视图中删除该行和执行就地更新。作为页脚,我还有一个commandButton叫做 “删除每一行” 。
commandButton
最后一个按钮起作用。我单击它,从模型中删除每一行(即,ArrayList包含元素的元素变为空),dataTable并footer facet在视图中将其重新渲染(或更新)。
ArrayList
dataTable
footer facet
另一方面,当我单击某一行上的按钮以将其删除时,它会部分起作用。相应的元素已从模型中删除,但视图未更新。该行仍在中,dataTable并且footer facet未更改。
我的代码中包含以下代码users.xhtml。
users.xhtml
<f:metadata> <f:viewParam name="id" value="#{users.id}" /> <f:event type="preRenderView" listener="#{users.init}" /> </f:metadata> ... <h:form id="usersForm"> <p:outputPanel> <p:dataTable id="userTable" value="#{users.user.friendList}" var="friend"> <p:column> <h:outputText value="#{friend.name}" /> </p:column> <p:column> <p:commandButton action="#{users.user.removeFriend(friend)}" ajax="true" update="userTable somethingElse" process="@this" onerror="errorDialog.show();" icon="ui-icon-delete" title="delete user"> </p:commandButton> </p:column> <f:facet id="somethingElse" name="footer"> aye: ${users.user.xxx} </f:facet> </p:dataTable> </p:outputPanel> <p:commandButton action="#{users.user.removeAllFriends()}" ajax="true" update="userTable somethingElse" process="@this" icon="ui-icon-close" value="delete all friends?"> </p:commandButton> </h:form>
那么,您认为这里的问题是什么?
我正在使用JSF 2.0和Primefaces 3.0
我认识到此问题是我们当前PF 3.0页面之一。如果您使用它,它将起作用update="@form"。我还没有真正的时间调查真正的原因,所以我可以将其报告给PF人员,因为此问题并未在所有页面中都得到体现。即使在同一张表中,也可以按预期使用其他按钮。
update="@form"
试试看:
<p:commandButton update="@form" ... />
更新 :考虑一下,可能与的存在有关process="@this"。
process="@this"