Caros amigos estou implementando uma página de acesso com Login e Senha
E recebo uma exception do Controle quando o Login ou Senha são inválidos
Gostaria de saber como evitar de mostrar uma página com todas aquelas mensagens de erros…
captando o exception e apenas mostrar uma mensagem “Usuario ou Senha Inválido” para o Usuario, na mesma página do Login
usando as tags <h:messages> ou <h:message>?
Como pegar exceção e mostrar na pagina JSF na tag messages ou message?
9 Respostas
this.facesMessages.add();new FacesMessage(“Sua mensagem.”)
O ideal é criar uma classe para toda a aplicação.
Olá Puka!
Obrigado pela resposta…
onde devo colocar esse trecho de código que voce me enviou? (sou iniciante)
Poderia mostrar um exemplo?
E isso evita de ir para pagina de erro? mostrando apenas na tag messages?
No seu bean, onde quiser incluir a mensagem:
this.facesMessages.add(new FacesMessage("Sua mensagem."));
O ideal é criar uma classe para toda a aplicação.
e na página usa o
<h:message>
Olá Puka!
Obrigado pela resposta, mas infelizmente mesmo colocando esse código … ele não evita de apresentar a exceção na página. Nem muito menos na <h:message> como eu queria.
E como seria criar uma classe para toda aplicação?
Alguém mais sabe como resolver o problema?
Alguma dica?
Alguma sugestão de link?
Olá,
Você tem que capturar a exceção para que ela não “escape” para o servidor, senão o usuário vai ser redirecionado para a página de erro.
Mais ou menos assim:
try {
// Executa aqui o codigo perigoso, que dá exceção
fazAlgumaCoisa();
} catch (Exception e) {
// Depois grava no contexto do Faces
FacesContext.getCurrentInstance().addMessage(new FacesMessage(FacesMessage.SEVERITY_INFO,
e.getMessage(), e.getMessage()));
}
OBS1: para mostrar essa mensagem, use um componente h:messages em algum lugar da página. O h:message mostra as mensagens referentes a algum componente específico.
OBS2: este tratamento de erro está longe de ser o ideal, foi apenas para demonstrar como adiciona a mensagem.
Faça um tratamento mais cuidadoso quando estiver desenvolvendo!
Olá Gomesrod!
Obrigado pela resposta!
E qual seria o tratamento ideal? o que e onde devo ler para saber fazer um tratamento mais cuidadoso?
Uma coisa básica seria capturar diferentes tipos de exceção em CATCHs diferentes, aí cada uma teria um tratamento.
Por exemplo:
-> Uma exceção que tem a ver com digitação dos dados, como “CPF inválido”, pode só mostrar a mensagem para o usuário arrumar.
-> Se deu algum erro crítico, tipo erro ao executar a query no banco de dados, você poderia tomar outras providencias como: gravar em um arquivo de log, incluir uma mensagem adicional “Contate o Suporte”, emitir um alerta para o administrador, etc…
Outra dica é aprender a trabalhar melhor com as mensagens do Faces, quando usar h:message e h:messages, o que é melhor colocar no sumario e no detalhe, essas coisas.
Para ajudar nesses assuntos, pesquise no google sobre:
-> tratamento de exceções java
-> mensagens jsf
-> h:message
Beleza Gomesrod!
Obrigado pelas informações!