Bom dia…
Quero usar o <p:messages> e o <p:message> em meu form, um será para mensagens “globais” e outro para mensagens locais, Por exemplo: O <p:message> apresenta mensagem de campo não preenchido e o <p:messages> apresenta mensagem de login inválido. Ficou claro?
Minha dúvida é como direcionar a mensagem para um ou para outro, peguei um exemplo de internet e não consegui fazer funcionar. Alguém aí pode me ajudar?
LoginBean
public String loginAction()
{
//Valida preenchimento dos campos de email e senha
boolean campoBranco = false;
if((email == null) || (email.trim().length() == 0))
{
campoBranco = true;
/*
FacesMessage facesMessage = new FacesMessage("Preencha o email e tente novamente!");
facesMessage.setSeverity(FacesMessage.SEVERITY_ERROR);
FacesContext.getCurrentInstance().addMessage(null,facesMessage);
return null;
*
*/
FacesContext.getCurrentInstance().addMessage("loginForm:email",new FacesMessage(FacesMessage.SEVERITY_ERROR, "Email não informado!","Preencha o email e tente novamente!"));
}
if((senha == null) || (senha.trim().length() == 0))
{
campoBranco = true;
/*
FacesMessage facesMessage = new FacesMessage("Preencha a senha e tente novamente!");
facesMessage.setSeverity(FacesMessage.SEVERITY_ERROR);
FacesContext.getCurrentInstance().addMessage(null,facesMessage);
*
*/
FacesContext.getCurrentInstance().addMessage("loginForm:senha",new FacesMessage(FacesMessage.SEVERITY_ERROR, "Senha não informada!","Preencha a senha e tente novamente!"));
}
if(campoBranco)
return null;
//Verifica se há informações de usuário na sessão. Caso já exista tenta validar para não ir sempre ao banco de dados
if(usuarioSessao != null)
{
Cliente c = usuarioSessao.getCliente();
if(c != null)
{
if((c.getEmail().trim().equals(email.trim())) &&
(c.getSenha().equals(senha)))
return "auth/bemvindo";
}
}
else
usuarioSessao = new UsuarioSessionBean();
//Consulta informações do usuário no banco e verifica o login
ClienteDaoFactory cFactory = new ClienteDaoFactory();
IClienteDao clienteDao = cFactory.getClienteDao();
Cliente cliente = new Cliente();
cliente.setEmail(email);
List<Cliente> listaCliente = clienteDao.findBy(cliente);
FacesMessage fMsg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Login inválido!","Email ou senha invalidos, tente novamente por favor");
if(listaCliente.isEmpty())
{
FacesContext.getCurrentInstance().addMessage(null,fMsg);
return null;
}
cliente = listaCliente.get(0);
if((!cliente.getEmail().equals(email)) || (!cliente.getSenha().equals(senha)))
{
FacesContext.getCurrentInstance().addMessage(null,fMsg);
return null;
}
usuarioSessao.setCliente(cliente);
return "auth/bemvindo";
}
login.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<title>TESTE</title>
</h:head>
<h:body>
Bem vindo ao TESTE<br/>
<h:form id="loginForm">
<p:messages id="messages" />
<!--<p:growl id="msg" showDetail="true" life="3000" />-->
<!--<p:growl id="growlLoginValidationStatus" showDetail="true" sticky="false" autoUpdate="true" life="4000" redisplay="false" showSummary="true" globalOnly="false" />-->
<p:panel header="Login" style="width: 360px;">
<h:panelGrid id="loginPanel" columns="2">
<h:outputText value="Email:" for="email" />
<p:inputText id="email" value="#{loginBean.email}" ></p:inputText>
<p:spacer></p:spacer>
<p:message for="email" />
<h:outputText value="Senha" for="senha" />
<p:password id="senha" value="#{loginBean.senha}" feedback="false" minLength="1"></p:password>
<p:spacer></p:spacer>
<p:message for="senha" />
<p:spacer></p:spacer>
<p:commandButton action="#{loginBean.loginAction}" value="Login" update="loginForm" ajax="true"/>
</h:panelGrid>
</p:panel>
</h:form>
</h:body>
</html>