我有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
}