第二次点击

时间:2018-02-01 06:41:15

标签: ajax jsf primefaces

我有3个managebean一个模型和2个控制器(1个用于弹出文本)我想在插入数据库后弹出一个。

我的页面是这样的问题是当我打电话给mensaje.mostrar()我工作,但当我尝试调用cursoControlador.registrarCurso()并从那里尝试调用mensaje.mostrar(),改变从mostrarMensaje(布尔)没有显示弹出窗口。

<ui:define name="centro">
    <h:form>
        <h:panelGrid columns="3" cellpadding="5">

            <p:outputLabel value="Nombre" />
            <p:inputText value="#{cursoModelo.nombre}"/>

这是按钮使用并且工作正常

<p:commandButton action="#{mesaje.mostrar()}" value="Registrar Curso" >
    <f:ajax render="@form"/>
</p:commandButton>

这是我想要的行为

<p:commandButton action="#{cursoControlador.registrarCurso()}" value="Registrar Curso" >
    <f:ajax render="@form"/>
</p:commandButton>

这是我想要显示的弹出消息

    </h:panelGrid>
        <h:panelGroup layout="block" styleClass="fondo-popup" rendered="#{mensaje.mostrarMensaje}">
            <div class="panel-popup">
                <p:outputLabel value="#{mensaje.texto}"/>
                <h:commandButton value="Aceptar" action="#{mensaje.esconder()}">
                    <f:ajax render="@form"/>
                </h:commandButton>
            </div>
        </h:panelGroup>
    </h:form>

</ui:define>

模型

@Named(value = "cursoModelo")
@SessionScoped
public class CursoModelo implements Serializable {

    private String nombre;
    //getters and setters...
}

控制器1

@Named(value = "cursoControlador")
@SessionScoped
public class CursoControlador implements Serializable{
    @Inject private CursoModelo cursoModelo;
    @Inject private Mensaje mensaje;

    /**
     * Creates a new instance of CursoControlador
     */
    public CursoControlador() {
    }

    public String registrarCurso(){
        //SOME CODE that inserts into de database
        mensaje.mostrar(); //this is the problem probably i'm doing it wrong
        return "index";
    }
}

控制器2(消息的控制器)

@Named(value = "mensaje")
@SessionScoped
public class Mensaje implements Serializable {

    private String texto;
    private boolean mostrarMensaje;
    /**
     * Creates a new instance of Mensaje
     */
    public Mensaje() {
        texto = "Mensaje a mostrar";
        mostrarMensaje = false;
    }

    public void mostrar(){
        mostrarMensaje = true;
    }

    public void esconder(){
        mostrarMensaje = false;
    }
    //getters and setters from texto and mostrarMensaje
}

0 个答案:

没有答案