我有一個表格在表格中。表格中的一列顯示一排按鈕以編輯和刪除表格條目。當我刪除一個條目從按鈕的action
屬性呼叫控制器時,它按預期工作。Primefaces DataTable - 用對話框刪除刪除錯誤的條目
但是,一旦我添加了一個對話框讓用戶確認刪除,就會刪除一個錯誤的條目。它始終是當前表中的最後一個條目。我不知道是什麼原因 - 我使用相同的DataTable
var
作爲按鈕和對話框。
我正在使用JSF 2(Mojarra 2.1.6)和Primefaces 3.5在Suse 12.2機器上部署在JBoss 7.1.1上。
形式:
<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外部對話框,我將如何同時在我的bean上設置var並激活對話框? – kostja 2013-04-09 08:29:40
完美地工作。再次感謝,丹尼爾 – kostja 2013-04-09 09:48:48
不客氣。 – Daniel 2013-04-09 10:13:52