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?

G

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?

G

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