Datatable não atualiza após uma chamada ajax bem-sucedida
Eu tenho uma tabela de dados. Cada linha da tabela possui umcommandButton
chamado'Retirar', que deve remover essa linha do modelo e da visualização e executar uma atualização no local. Como rodapé, tenho outrocommandButton
chamado 'Remover todas as linhas'.
O último botão funciona. Clico nele, todas as linhas são removidas do modelo (ou seja, oArrayList
contendo os elementos fica vazio) e odataTable
efooter facet
é renderizado novamente (ou atualizado) na exibiçã
Por outro lado, quando clico em um botão em uma das linhas, para removê-lo, ele funciona parcialmente. O elemento correspondente é removido do modelo, mas a visualização não é atualizada. Essa linha ainda está lá nodataTable
e afooter facet
não mudou.
Tenho o seguinte trecho de código no meuusers.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>
Então, qual você acha que é o problema aqui?
Estou usando JSF 2.0 e Primefaces 3.0