librerias - modelo jsf
Hay algunos FacesMessages no administrados, esto significa que no todos los FacesMessage tuvieron la oportunidad de ser renderizados (1)
Estoy usando jsf 2.1, Primefaces 3.3
Introduzco la palabra "primefaces" en los tres campos de inputText.
pregunta 1: ¿cómo mostrar el mensaje de rostros al control de especificar?
Sigue mostrándome error:
Hay algunos FacesMessages no administrados, esto significa que no todos los FacesMessage tuvieron la oportunidad de ser renderizados
question2: si presiono el botón de enviar cuando los tres campos de InputText están vacíos, me mostrará el "mensaje de error de entrada requerido" en cada uno de los mensajes de control, pero cómo mostrar el error "hay 3 errores en la página" en el mensaje global (id = "msg")?
gracias por adelantado :)
página xhtml:
<h:form id="particluar">
<p:message id="msg" globalOnly="true" display="text"/>
<h:panelGrid columns="2" id="test">
<h:panelGrid id="panel2" columns="3">
<p:inputText id="name1" value="Student.studentID" required="true"/>
<p:commandButton value="Check Name" actionListener="#{Student.abc}" process="name1" update="panel2" />
<p:message id="msg1" for="name1" display="text"/>
</h:panelGrid>
<p:inputText id="name2" required="true"/>
<p:message id="msg2" for="name2" display="text"/>
<p:inputText id="name3" required="true"/>
<p:message id="msg3" for="name3" display="text"/>
</h:panelGrid>
<p:commandButton value="submit" actionListener="#{Student.xyz}" update="particluar" />
</h:form>
Clase Student.java:
private String studentID = "";
public Boolean getStudentID() {
return studentID;
}
public void setStudentID(String studentID) {
this.studentID= studentID;
}
public void abc() {
if (name.equals("primefaces")) {
FacesContext.getCurrentInstance().addMessage("msg1", new FacesMessage(FacesMessage.SEVERITY_ERROR,"Invalid Name", "Invalid Name"));
//how to make message(id="msg") display "total 1 error found."
}
}
public void xyz() {
if (name1.equals("primefaces")) {
FacesContext.getCurrentInstance().addMessage("msg1", new FacesMessage(FacesMessage.SEVERITY_ERROR,"Invalid Name", "Invalid Name"));
}
if (name2.equals("primefaces")) {
FacesContext.getCurrentInstance().addMessage("msg2", new FacesMessage(FacesMessage.SEVERITY_ERROR,"Invalid Name", "Invalid Name"));
}
if (name3.equals("primefaces")) {
FacesContext.getCurrentInstance().addMessage("msg3", new FacesMessage(FacesMessage.SEVERITY_ERROR,"Invalid Name", "Invalid Name"));
}
//how to make message(id="msg") display "total 3 error found."
}
¿Cómo mostrar el mensaje de rostros al control de especificar? Sigue mostrándome el error: hay algunos FacesMessages no controlados, esto significa que no todos los FacesMessage tuvieron la oportunidad de ser renderizados
Debe especificar una ID de cliente válida. La identificación del cliente no es lo mismo que la identificación del componente. El ID del cliente es lo que ve en el resultado HTML generado por JSF. Además, la ID del cliente debe ser la del componente de entrada, no del componente de mensaje.
Entonces, dado un
<h:form id="particular">
<p:inputText id="name1" />
<p:message id="msg1" for="name1" />
</h:form>
el componente de entrada tiene la ID de cliente particular:name1
(haga clic con el botón derecho en el navegador y vea Ver código fuente para verlo usted mismo). Por lo tanto, el mensaje debe adjuntarse exactamente a esta ID de cliente.
context.addMessage("particular:name1", message);
si presiono el botón enviar vacío todos los tres campos de texto de entrada, me mostrará el "mensaje de error de entrada requerido" en cada uno de los mensajes de control, pero cómo mostrar el error "hay 3 errores en la página" en el mensaje (id = "msg")?
<p:message>
no es el componente válido para eso, debe usar <p:messages>
.
<p:messages id="msg" globalOnly="true" display="text"/>
El globalOnly="true"
significa que solo se mostrarán los mensajes con un ID de cliente null
. Por lo tanto, debería simplemente agregar exactamente tal mensaje.
context.addMessage(null, message);
Ver también:
No relacionado con el problema concreto, los mensajes no globales ("Nombre inválido") que está intentando agregar allí en realidad deberían ser realizados por un validador de pleno derecho. Consulte también Cómo realizar la validación en JSF, cómo crear un validador personalizado en JSF para obtener un ejemplo concreto.