【发布时间】:2017-08-01 01:44:51
【问题描述】:
我有一个p:commandButton,它调用了一个p:dialog,里面有一个p:dataTable。用户应该能够选择一行或多行(将每个元素保存在 bean 内的列表中)并单击“保存”按钮以将该数据保存在数据库中。我的问题是,当我从这个数据表中选择一些行然后按 ESC 键时,对话框会按原样关闭,但是当我再次打开该对话框时,仍然选择了已选择但未保存的值。我知道我可以制作 closeOnEscape="false" 并制作一个“取消”按钮并将 bean 中的列表设置为 null,但我想知道在用 ESC 关闭对话框后是否有办法“清理”该数据表。我正在使用 Primefaces 4.0
我的对话框如下所示:
<p:dialog widgetVar="coolName" modal="true"
appendTo="@(body)" resizable="true" closeOnEscape="true"
closable="false" position="center" showEffect="clip"
hideEffect="clip" header="really cool dialog" width="1000">
<h:form id="form">
<p:growl sticky ="true" showDetail="true" />
<p:tab title="List of Elements" id="tabOne">
<p:dataTable id="tblOfElements" var="listElements"
paginator="true" rows="5" rowKey="#{listElements[0]}"
paginatorPosition="bottom" rowIndexVar="index"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport}
{NextPageLink} {LastPageLink} {RowsPerPageDropdown} "
currentPageReportTemplate="{currentPage} de {totalPages}"
emptyMessage="this list is empty"
selection="#{cBean.mBean.listOfSelection}"
value="#{cBean.mBean.listElements}"
style="text-align:center">
<f:facet name="header">
List of Elements
</f:facet>
<p:column selectionMode="multiple" style="width:4%;text-align:center"/>
<p:column headerText="N°" style="width: 4%">
#{index + 1}
</p:column>
<p:column headerText="Name" style="width: 50%">
<h:outputText value="#{listElements[1]}" />
</p:column>
<p:column headerText="Date" style="width: 12%">
<h:outputText value="#{listElements[3]}" />
</p:column>
</p:dataTable>
<br />
<p:commandButton value="Save" style="float: right;"
actionListener="#{cBean.saveElements}"
onclick="PF('coolName').hide()" />
<br />
<br />
</p:tab>
</p:tabView>
</h:form>
</p:dialog>
【问题讨论】:
标签: jsf primefaces