У меня есть таблица в форме. В одном из столбцов в таблице отображается строка кнопок для редактирования и удаления записей в таблице. Когда я удаляю запись с помощью элемента управления из атрибута action
кнопки, он работает так, как ожидалось.Первичные данные DataTable - удаление с помощью диалога удаляет неправильную запись
Но как только я добавил диалоговое окно, позволяющее пользователю подтвердить удаление, неправильная запись удаляется. Это всегда последняя запись в текущей таблице. Я не знаю, в чем причина: я использую тот же DataTable
var
для кнопки и для диалога.
Я работаю с JSF 2 (Mojarra 2.1.6) и Primefaces 3.5, размещенными на JBoss 7.1.1 на машине Suse 12.2.
Форма:
<h:form id="downloads">
<ui:include src="components/table.xhtml"/>
</h:form>
Стол:
<ui:composition>
<p:dataTable value="#{controller.currentLevelResources}"
var="download" id="downloadTable" scrollHeight="120" rows="10">
<p:column sortBy="#{download.name}">
<f:facet name="header">Name</f:facet>
<h:outputText id="downloadName" value="#{download.name}" title="#{download.description}" />
</p:column>
...
<p:column>
<ui:include src="menuBar.xhtml"></ui:include>
</p:column>
Строка меню:
<ui:composition>
<p:commandButton id="edit"
action="#{downloadEditController.editResource(download)}"
icon="ui-icon-gear" title="Edit" oncomplete="updateStyles()"
update=":downloads" />
<p:commandButton id="delete" onclick="deletedDlg.show();"
icon="ui-icon-trash" title="Delete" oncomplete="updateStyles()" />
<p:dialog header="Delete confirmation" widgetVar="deletedDlg"
resizable="false">
<h:panelGroup layout="block" style="padding:5px;">
<h:outputText
value="The Resource #{download} will be deleted. Proceed?" />
</h:panelGroup>
<p:commandButton id="deleteBtn" value="Delete"
oncomplete="deletedDlg.hide(); updateStyles(); "
action="#{downloadEditController.deleteResource(download)}"
process="@this" update=":downloads">
</p:commandButton>
<p:commandButton value="Cancel" type="button"
onclick="deletedDlg.hide();" />
</p:dialog>
Если я заменяю диалог с этим, все работает:
<p:commandButton id="delete" icon="ui-icon-trash" title="Delete"
action="#{downloadEditController.deleteResource(download)}"
oncomplete="updateStyles()" update=":downloads" />
сделаю. Спасибо, что посмотрели. У вас есть идея, ПОЧЕМУ мой подход не работает (я знаю, что это сложная часть вопроса). Я использую одну и ту же переменную в конце концов? И внешнее диалоговое окно WRT, как бы я одновременно установил var в свой bean-компонент и активировал диалог? – kostja
Работает отлично. Еще раз спасибо, Daniel – kostja
Добро пожаловать. – Daniel