Datatable не обновляется после успешного вызова ajax
У меня есть таблица данных. Каждый ряд таблицы имеетcommandButton
называется'Удалить', который должен удалить эту строку из модели и вида и выполнить обновление на месте. Как нижний колонтитул, у меня есть еще одинcommandButton
называется«Удалить каждый ряд».
Последняя кнопка работает. Я нажимаю на нее, каждая строка удаляется из модели (т.е.ArrayList
содержащий элементы становится пустым) иdataTable
а такжеfooter facet
перерисовывается (или обновляется) в представлении.
С другой стороны, когда я нажимаю кнопку в одной из строк, чтобы удалить ее, она частично работает. Соответствующий элемент удаляется из модели, но представление не обновляется. Этот ряд все еще там вdataTable
иfooter facet
не изменился
У меня есть следующий кусок кода в моем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