Estoy creando un ejemplo simple en JSF. Es una aplicación de inicio de sesión pequeña. Mi problema es mensajes de error duplicados en mi página:Mensajes de error en la página con <h:messages> en JSF
Tengo dos h:message
(de nombre de usuario y contraseña) etiquetas y uno h:messages
(mensajes globales) en mi página: Método
<h:form id="loginForm">
<h:panelGrid columns="3">
<h:outputText value="Username" />
<h:inputText id="username" value="#{loginBean.username}"
required="true" requiredMessage="Please enter your username" />
<h:message for="username" errorClass="errorMessage" /> <!-- Message for username -->
<h:outputText value="Password" />
<h:inputSecret id="password" value="#{loginBean.password}"
required="true" requiredMessage="Please enter your password" />
<h:message for="password" errorClass="errorMessage" /> <!-- Message for password -->
<h:commandButton value="Login" action="#{loginBean.login}" />
</h:panelGrid>
<h:messages styleClass="errorMessage" /> <!-- Global messages -->
</h:form>
Acción login()
en mi respaldo frijol:
public String login() {
FacesContext facesContext = FacesContext.getCurrentInstance();
if ("admin".equals(username) && "pass".equals(password)) {
return "success";
} else {
facesContext.addMessage("loginForm", new FacesMessage("Username or password is incorrect"));
return null;
}
}
quiero mostrar mensaje sobre nombre de usuario o contraseña vacíos solo al lado de estos campos, no debajo de mi botón en mensajes globales. Y quiero imprimir mi mensaje de error desde mi método de acción en los mensajes globales si la contraseña o el nombre de usuario son incorrectos. ¿Cómo puedo resolver esto?
He intentado utilizar el atributo globalOnly
:
<h:messages styleClass="errorMessage" globalOnly="true" /> <!-- Global messages -->
pero no se resuelve por completo mi problema, ya que los mensajes globales no se muestran en absoluto en este caso.
¡Gracias de antemano!
Gracias tanto !! ¡Funciona! – Michael