在对话框确认后显示列表框

时间:2018-03-10 11:46:42

标签: jsf primefaces

我有一个用户数据表,其中包含一个带删除按钮的列。 我想要的是当我点击按钮时出现确认对话框并要求确认。 在确认之后我想检查一个条件是否真的另一个对话框显示包含一个列表框。 这是我的view.xhtml:

<h:form id="form">
    <p:dataTable value="#{PersonnelMB.lstp}" var="h" resizableColumns="true" id="pdt" paginator="true" rows="10" widgetVar="ptable">
    <f:facet name="header">
        <p:outputPanel style="align-content: right:all;">
            <h:outputText value="Recherche:" />
            <p:inputText id="globalFilter" onkeyup="PF('ptable').filter();" style="width:150px;height: 28px;" placeholder="Enter keyword"/>
        </p:outputPanel>
    </f:facet>
    <p:column sortBy="#{h.id}" filterBy="#{h.id}" style="text-align: center;">
        <f:facet name="header">
            <h:outputText value="Id"></h:outputText>
        </f:facet>
        <h:outputText value="#{h.id}"></h:outputText>
    </p:column>
    <p:column sortBy="#{h.prenom}" filterBy="#{h.prenom}" style="text-align: center">
        <f:facet name="header">
            <h:outputText value="Prenom"></h:outputText>
        </f:facet>
        <h:outputText value="#{h.prenom}"></h:outputText>
    </p:column>
    <p:column sortBy="#{h.nom}" filterBy="#{h.nom}" style="text-align: center">
        <f:facet name="header">
            <h:outputText value="Nom"></h:outputText>
        </f:facet>
        <h:outputText value="#{h.nom}"></h:outputText>
    </p:column>
    <p:column filterBy="#{h.email}" >
        <f:facet name="header">
            <h:outputText value="Email"></h:outputText><br/>
        </f:facet>
        <h:outputText value="#{h.email}"></h:outputText>
    </p:column>
    <p:column  >
        <f:facet name="header">
            <h:outputText value="Actions"></h:outputText>
        </f:facet>
        <p:commandButton type="button" icon="ui-icon-trash" style="background-color:#f20d0d;" onclick="confirmation.show()"/>
        <p:confirmDialog message="Are you sure?" header="Confirmation" severity="alert" widgetVar="confirmation">
          <p:commandButton value="Yes" oncomplete="confirmation.hide()"  actionListener="#{PersonnelMB.supprimerPerso}" />
          <p:commandButton value="Not" onclick="confirmation.hide()" type="button" />
        </p:confirmDialog>

    </p:dataTable>

1 个答案:

答案 0 :(得分:0)

您可以从托管bean中调用另一个对话框(假设其widgetVar =&#34; anotherDialog&#34;),如下所示:

    public void supprimerPerso() {
    ...
    if (condition) {
        RequestContext requestContext = RequestContext.getCurrentInstance();
        requestContext.execute("PF('anotherDialog').show()");
    }
}

注意:1。如果您没有将任何参数传递给上述方法,请记住在方法调用中添加大括号:actionListener =&#34;#{PersonnelMB.supprimerPerso ()}&# 34 ;. 传递参数时省略大括号。 2.启用选择并使用所选记录进行删除。这使它更容易。

检查showcase是否在&#34; anotherDialog&#34;中显示列表框。像这样:

<p:dialog header="Selected User for Deletion" widgetVar="anotherDialog" modal="true" showEffect="fade"  resizable="false">
    <p:panelGrid columns="2" id="display" columnClasses="label,output">
        <h:outputText value="Employee ID:" />
        <h:outputText value="#{PersonnelMB.selectedUser.id}" />

        <h:outputText value="Employee Name:" />
        <h:outputText value="#{PersonnelMB.selectedUser.nom}" />

    </p:panelGrid>
</p:dialog>