如何在事件调用之前更改属性的状态?

时间:2014-08-03 16:38:23

标签: jsf jsf-2

我正在使用此对话框显示创建表单

<p:dialog id="dialogoGestion" header="Asignar nueva gestión" widgetVar="dlg1" >
        <p:ajax event="close" update="dialogoGestion"/>
        <h:form>
            <h:panelGrid columns="2">
                <h:outputText value="Cliente: "/>
                <h:outputText value="#{miscMB.factura.cliente.nombre}"/>
                <h:outputText value="Factura: "/>
                <h:outputText value="#{miscMB.factura}"/>
                <h:outputLabel value="#{bundle.CreateGestionLabel_descripcion}" for="descripcion" />
                <p:inputText id="descripcion" value="#{miscMB.nuevaGestion.descripcion}" title="#{bundle.CreateGestionTitle_descripcion}" />

                <h:outputLabel value="#{bundle.CreateGestionLabel_fechaLimiteGestion}" for="fechaLimiteGestion" />
                <p:calendar locale="es" pattern="dd/MM/yyyy" id="fechaLimiteGestion" value="#{miscMB.nuevaGestion.fechaLimiteGestion}" title="#{bundle.CreateGestionTitle_fechaLimiteGestion}" required="true" requiredMessage="#{bundle.CreateGestionRequiredMessage_fechaLimiteGestion}">

                </p:calendar>
                <h:outputLabel value="#{bundle.CreateGestionLabel_usuario}" for="usuario" />
                <p:selectOneMenu id="usuario" value="#{miscMB.nuevaGestion.usuario}"  required="true" requiredMessage="#{bundle.CreateGestionRequiredMessage_usuario}">
                    <f:selectItems value="#{usuarioController.itemsAvailableSelectOne}"/>
                </p:selectOneMenu>

            </h:panelGrid>
            <br />
            <p:commandButton onsuccess="micalendario.update();PF('dlg1').hide();" action="#{gestionController.crearGestion()}" value="#{bundle.CreateGestionSaveLink}" >
                <f:setPropertyActionListener target="#{gestionController.selected}" value="#{miscMB.nuevaGestion}"/>
                <f:setPropertyActionListener target="#{gestionController.factura}" value="#{miscMB.factura}"/>
                <f:setPropertyActionListener value="#{null}" target="#{miscMB.nuevaGestion}"/>
                <f:actionListener binding="#{miscMB.anularNuevaGestion()}"/>
                <f:actionListener binding="#{miscMB.agregarGestion(gestionController.selected)}"/>


            </p:commandButton>
        </h:form>
    </p:dialog>

这是我调用对话框显示

的地方
<p:commandLink value="Asignar gestión" onclick="PF('dlg1').show();return false;" action="#{gestionController.preparar()}" rendered="#{miscMB.factura!=null}">
       <f:setPropertyActionListener target="#{gestionController.factura}" value="#{miscMB.factura}"/>
</p:commandLink>

所发生的情况是,<h:outputText value="#{miscMB.factura.cliente.nombre}"/><h:outputText value="#{miscMB.factura}"/>值都会显示属性&#39;最后一个州。

例如,第一次选择一个项目并调用对话框时,输出为none,因为未设置状态。然后,当您选择另一个项目并调用该对话框时,输出是最后设置的状态,即上一个项目值。

显然,commandLink中的setPropertyActionListener在关闭对话框或执行操作后被调用,但是在单击commandLink时则不会。

那么,如何在显示对话框之前设置属性?

0 个答案:

没有答案