当我重新打开对话框时,对话框中的表单会保留值

时间:2018-02-20 17:14:51

标签: spring jsf primefaces

我在对话框中使用一个表单来编辑一些数据,我使用 setPropertyActionListener 标签从dataTable获取此数据,我的表单正确显示所有字段,但是当我更改一些数据并关闭时对话框并重新打开它(没有调换)表单保留最新数据并忽略来自 setPropertyActionListener

的内容

这是我用来打开对话框的代码

<p:menuButton value="Actions">
<p:menuitem resetValues="true" value="Update"
    icon="fa fa-edit" process="@this"
    actionListener="#{myMB.resetSelectedEntite(a)}"
    update="formUpdateAff:displayEditionAff"
    oncomplete="PF('affUpdateDialogWidget').show()">
    <f:setPropertyActionListener
        target="#{myMB.selectedAffectation}" value="#{a}" />
    <f:actionListener
        type="com.dummy.AffActionListener" />
</p:menuitem>

对话框代码:

            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui">
            <h:body>
                <p:dialog widgetVar="affUpdateDialogWidget" id="affEditerDialogId"
                    width="30%" showEffect="explode" hideEffect="explode" modal="true">

                    <h:form id="formUpdateAff" prependId="true">
                        <p:panel style="margin-bottom:20px;float:center"
                            widgetVar="titlePanelWidget" collapsed="true"
                            styleClass="customTitleBar">
                            <f:facet name="header">
                                    Update
                                </f:facet>
                        </p:panel>


                        <p:tooltip position="top" />
                        <h:panelGrid id="displayEditionAff" columns="3" cellpadding="4">

                            <p:outputLabel value="" />
                            <h:inputHidden value="#{myMB.selectedAffectation.id}" id="idAff" />
                            <p:message for="idAff" display="tooltip" />

                            <p:outputLabel value="Date Aff :" for="dateAffectId" />
                            <p:calendar value="#{myMB.selectedAffectation.dateAff}"
                                id="dateAffectId" pattern="dd/MM/yyyy" yearRange="c-10:c+0"
                                showButtonPanel="true" converter="primefacesCalendarConverter"
                                required="true" locale="fr" showOn="button" />
                            <p:message for="dateAffectId" display="tooltip" />

                            <p:outputLabel value="Ville :" for="villeIdAff" />
                            <p:selectOneMenu style="width:100%; font-weight:bold"
                                required="true" id="villeIdAff" appendTo="@this"
                                value="#{myMB.selectedAffectation.refCompagnie.refGroupement.refVille.id}"
                                rendered="#{myMB.selectedAffectation.refCompagnie.id != 0}">
                                <f:selectItem itemLabel="----------------" itemValue="" />
                                <f:selectItems value="#{lieuUnitMB.selectLieuxByType('VILLE',0)}"
                                    var="a" itemValue="#{a.id}" itemLabel="#{a.libelle}" />
                                <p:ajax
                                    listener="#{myMB.loadGroupements(myMB.selectedAffectation.refCompagnie.refGroupement.refVille.id , myMB.selectedAffectation.refCompagnie.refGroupement.refCatGroupement.id)}"
                                    update="groupIdAff groupIdxxx" />
                            </p:selectOneMenu>


                            <p:selectOneMenu style="width:100%; font-weight:bold"
                                rendered="#{myMB.selectedAffectation.refCompagnie.id == 0}"
                                required="true" id="villeId2" appendTo="@this"
                                value="#{myMB.selectedAffectation.refGroupement.refVille.id}">
                                <f:selectItem itemLabel="----------------" itemValue="" />
                                <f:selectItems value="#{lieuUnitMB.selectLieuxByType('VILLE',0)}"
                                    var="a" itemValue="#{a.id}" itemLabel="#{a.libelle}" />
                                <p:ajax
                                    listener="#{myMB.loadGroupements(myMB.selectedAffectation.refGroupement.refVille.id , myMB.selectedAffectation.refGroupement.refCatGroupement.id)}"
                                    update="groupIdAff groupIdxxx" />
                            </p:selectOneMenu>
                            <p:message for="villeId2" display="tooltip" />


                            <p:outputLabel value="Catégorie Groupement :" for="catIdAff" />
                            <p:selectOneMenu style="width:100%; font-weight:bold"
                                required="true" id="catIdAff" appendTo="@this"
                                value="#{myMB.selectedAffectation.refGroupement.refCatGroupement.id}"
                                rendered="#{myMB.selectedAffectation.refCompagnie.id == 0}">
                                <f:selectItem itemLabel="----------------" itemValue="" />
                                <f:selectItems value="#{repositoryMB.selectRepositories()}" />
                                <p:ajax
                                    listener="#{myMB.loadGroupements(myMB.selectedAffectation.refGroupement.refVille.id , myMB.selectedAffectation.refGroupement.refCatGroupement.id)}"
                                    update="groupIdAff groupIdxxx" />
                            </p:selectOneMenu>
                            <p:selectOneMenu style="width:100%; font-weight:bold"
                                required="true" id="catId2" appendTo="@this"
                                value="#{myMB.selectedAffectation.refCompagnie.refGroupement.refCatGroupement.id}"
                                rendered="#{myMB.selectedAffectation.refCompagnie.id != 0}">
                                <f:selectItem itemLabel="----------------" itemValue="" />
                                <f:selectItems value="#{repositoryMB.selectRepositories()}" />
                                <p:ajax
                                    listener="#{myMB.loadGroupements(myMB.selectedAffectation.refCompagnie.refGroupement.refVille.id , myMB.selectedAffectation.refCompagnie.refGroupement.refCatGroupement.id)}"
                                    update="groupIdAff groupIdxxx" />
                            </p:selectOneMenu>
                            <p:message for="catIdAff" display="tooltip" />


                            <p:outputLabel value="Groupement :" for="groupIdAff" />
                            <p:selectOneMenu
                                value="#{myMB.selectedAffectation.refCompagnie.refGroupement.id}"
                                style="width:100%; font-weight:bold" required="true"
                                id="groupIdAff" appendTo="@this"
                                rendered="#{myMB.selectedAffectation.refCompagnie.id != 0}">
                                <f:selectItem itemLabel="----------------" itemValue="" />
                                <f:selectItems
                                    value="#{myMB.loadGroupements(myMB.selectedAffectation.refCompagnie.refGroupement.refVille.id , myMB.selectedAffectation.refCompagnie.refGroupement.refCatGroupement.id)}" />
                                <p:ajax
                                    listener="#{myMB.loadCompagniesUpdate(myMB.selectedAffectation.refGroupement.id)}"
                                    update="displayEditionAff,toto" />
                            </p:selectOneMenu>
                            <p:selectOneMenu
                                value="#{myMB.selectedAffectation.refGroupement.id}"
                                style="width:100%; font-weight:bold" required="true"
                                id="groupIdxxx" appendTo="@this"
                                rendered="#{myMB.selectedAffectation.refCompagnie.id == 0}">
                                <f:selectItem itemLabel="----------------" itemValue="" />
                                <f:selectItems
                                    value="#{myMB.loadGroupements(myMB.selectedAffectation.refGroupement.refVille.id , myMB.selectedAffectation.refGroupement.refCatGroupement.id)}" />
                                <p:ajax
                                    listener="#{myMB.loadCompagniesUpdate(myMB.selectedAffectation.refGroupement.id)}"
                                    update="displayEditionAff,toto" />
                            </p:selectOneMenu>
                            <p:message for="groupIdAff" display="tooltip" />


                            <p:outputLabel value="Compagnie :" for="toto"
                                binding="#{myMB.uiOutputLabel}"
                                rendered="#{not empty myMB.compagniesUpdate}" />
                            <p:selectOneMenu binding="#{myMB.uiOutput}"
                                rendered="#{not empty myMB.compagniesUpdate}"
                                value="#{myMB.selectedAffectation.refCompagnie.id}"
                                style="width:100%; font-weight:bold" required="false" id="toto"
                                appendTo="@this" immediate="true">
                                <f:selectItem itemLabel="----------------" itemValue="" />
                                <f:selectItems
                                    value="#{myMB.loadCompagniesUpdate(myMB.selectedAffectation.refGroupement.id)}" />
                            </p:selectOneMenu>
                            <p:message for="toto" display="tooltip"
                                rendered="#{not empty myMB.compagniesUpdate}"
                                binding="#{myMB.uiOutputMsg}" />



                        </h:panelGrid>
                        <p:spacer />
                        <p:spacer />
                        <h:panelGrid columns="2">
                            <p:commandButton value="Editer" icon="ui-icon-plus"
                                action="#{myMB.updateEntite()}"
                                update=":entiteDetailDialogForm:tabsId:formAff:AffTable :messageGrowl :formUpdateAff"
                                process=":formUpdateAff"
                                oncomplete="closeDialogIfSucess(xhr, status, args, 'AffUpdateDialogWidget', 'AffEditerDialogId')" />

                            <p:commandButton value="#{bundle.cancel}" icon="ui-icon-cancel"
                                actionListener="#{myMB.resetSelectedEntite()}" type="button"
                                onclick="PF('AffUpdateDialogWidget').hide();" />
                        </h:panelGrid>
                    </h:form>

                </p:dialog>

            </h:body>
            </html>

我正在使用Primefaces 6.1

0 个答案:

没有答案