为什么primefaces视图在我将其设置为new时会保留一个值?

时间:2016-06-15 08:09:35

标签: jsf primefaces

当我双击数据表行并在模态对话框中显示它时,我只是想获取一些对象。我应该遗漏一些东西,因为它只能正确地做到一次。设置bean对象后,无论我做什么,它都会保留值。

以下是代码:

* XHTML:

    <!-- Modal dialog -->
    <p:dialog widgetVar="addNotDlg" id="idAddNotDlb" minHeight="40" modal="true"
        resizable="false" draggable="false" style="heigth:500">

            <p:panel id="panel">
                <p:messages id="messages" />
                <h:panelGrid columns="3" cellpadding="5">

                    <p:outputLabel for="resultado" value="Resultado:" />
                    <p:inputText id="resultado"
                        value="#{acuerdoBean.notificacion.resultado}" label="resultado" />
                    <p:message for="resultado" />

                    <p:outputLabel for="motivo" value="Motivo:" />
                    <p:inputText id="motivo"
                        value="#{acuerdoBean.notificacion.motivo}" label="motivo" />
                    <p:message for="motivo" />

                </h:panelGrid>

                <p:commandButton value="Guardar" id="addNewNotButton" actionListener="#{acuerdoBean.addNotificacion()}" 
                    update=":formNotificacion:notificacionesTable"
                    oncomplete="handleLoginRequest(xhr, status, args)" />
                <p:commandButton value="Cerrar" id="closeNewNotButton" onclick="PF('addNotDlg').hide();" />
                <h:outputText value="" />
            </p:panel>


    </p:dialog>

* Bean.java代码:

public void generateNewNotificacion() {
    this.tiposNotificaciones = pservice.getTiposNotificaciones();       
    this.tipoNotificacion = new Rstiponotifica();   
    this.direccionPorDefecto = (Rsdireccion) pservice.findDireccionPorDefecto();

    this.notificacion = new Rsnotificacion();
    this.notificacion.setRsacuerdo(acuerdo);
    this.notificacion.setRstiponotifica(tipoNotificacion);  
    this.notificacion.setRsdireccion(direccionPorDefecto);
}

上述函数在其他.xhtml文件事件中执行。我希望我的“this.notificacion”对象应该在模态中显示为新的,但它不会。 “this.notification”对象先前已设置,并保留在内存中。

<p:commandLink onclick="PF('addNotDlg').show();" actionListener="#{acuerdoBean.generateNewNotificacion()}">
    <h:outputText value="Añadir nueva notificacion" />
</p:commandLink>

提前致谢。

1 个答案:

答案 0 :(得分:1)

单击命令链接时在对话框内更新面板应解决您的问题。 commandLink具有您可以使用的更新属性。

您可以在primefaces网站上看到一个有效的例子:http://www.primefaces.org/showcase/ui/data/schedule.xhtml