Primefaces确认对话框不更新数据表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Primefaces确认对话框不更新数据表相关的知识,希望对你有一定的参考价值。

我想在用户从确认对话框确认操作后更新数据表,但它不起作用。

<p:panel id="formPanel" header="Welcome #{sessionBean.name}">
    <h:form id="dtForm">
        <p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" globalOnly="true" />
        <p:dataTable id="classList" var="class" value="#{listClassBean.classList}"  widgetVar="classListDT"
                     paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                     paginator="true" rows="10" rowsPerPageTemplate="5,10,15" paginatorPosition="bottom"
                     rowKey="#{class.classroomId}" style="margin: 20px 20px 20px 20px;">

            <!--columns omitted-->

            <p:column headerText="Exit" rendered="#{sessionBean.loggedAccount.accType == 'S'}"
                      style="width: 50px; text-align: center;">
                <p:commandButton icon="fa fa-sign-out" action="#{listClassBean.exitClass(class.classroomId)}"
                                 styleClass="redbutton" process="dtForm:classList" update="dtForm:classList">
                    <p:confirm header="Exit Class" 
                               message="Are you sure you want to exit the class #{classroomSettingBean.classroom.classroomId}?" 
                               icon="ui-icon-alert"/>
                </p:commandButton>
            </p:column>
        </p:dataTable>
    </h:form>
</p:panel>

<h:form>
    <p:confirmDialog global="true" showEffect="clip" hideEffect="clip">
        <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check"/>
        <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
    </p:confirmDialog>
</h:form>

一切都表现良好,只是它没有更新数据表。任何的想法?

答案

您只需要在表单和面板之间进行反向,如下所示:

<h:form id="dtForm">
      <p:panel id="formPanel" header="Welcome #{sessionBean.name}">

....

      </p:panel>
</h:form>
另一答案

添加p:remoteCommand。我有一个相关的问题,这是我如何解决它,只是我使用p:对话框。 textarea更新了dataTable'myDataTable'中的记录“MyMessage”。

<p:dialog header="Customize Message" id="editDlg" widgetVar="displayDlg" modal="true" resizable="false" width="450">
  <p:inputTextarea id="resin" value="#{MyBean.myMessage}" style="width: 400px; height: 150px; padding: 10px; resize: none" maximum="550" />
  <p:commandButton value="Cancel" onclick="PF('displayDlg').hide()" style="width: 75px; left: 220px" /><br/>
  <p:commandButton value="Update" action="#{myBean.updateMyMessage()}" update="form:my_growl" onclick="PF('displayDlg').hide()" style="width: 75px; left: 220px" oncomplete="refreshTable();" />
</p:dialog>
<p:remoteCommand name="refreshTable" action="#{myBean.loadChangedData()}" partialSubmit="true" process="@this, editDlg" update="myDataTable" />

以上是关于Primefaces确认对话框不更新数据表的主要内容,如果未能解决你的问题,请参考以下文章

JSF 2.0 更新 primefaces 对话框第一次不起作用

Primefaces如何更新对话框中的内容并保持对话框居中?

对话框关闭事件后 Primefaces 更新组件

从 Backing Bean 显示 Primefaces confirmDialog

Primefaces数据表排序和过滤直到rowSelect才起作用

行未更新 - 对话框中的更新按钮(由 dataTable 中的按钮打开)