Como pegar exceção e mostrar na pagina JSF na tag messages ou message?

9 respostas
M

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>?

9 Respostas

P

this.facesMessages.add(new FacesMessage(“Sua mensagem.”));

O ideal é criar uma classe para toda a aplicação.

M

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?

P

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>

M

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?

M

Alguém mais sabe como resolver o problema?
Alguma dica?
Alguma sugestão de link?

gomesrod

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!

M

Olá Gomesrod!
Obrigado pela resposta!

E qual seria o tratamento ideal? o que e onde devo ler para saber fazer um tratamento mais cuidadoso?

gomesrod

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

M

Beleza Gomesrod!

Obrigado pelas informações!

Criado 24 de março de 2010
Ultima resposta 26 de mar. de 2010
Respostas 9
Participantes 3