Olá!

Infelizmente o tratamento de exceções no JSF (JavaServer Faces) não é tão fácil quanto no Struts, enquanto no Struts o tratamento é feito de forma declarativa no struts-config.xml(eu acho mais fácil tratar dessa forma), no JSF é programático, ou seja você escreve o código que trata a exception para mostrar a mensagem correta na página. Geralmente isso é feito diretamente no Managed Bean usando blocos try…catch.

Quando você espera uma exception é intuitivo colocar um bloco try..catch e escrever o código para mostrar uma mensagem na página. Mas e se der um NullpointerException ou alguma outra RuntimeException?

Tratar essas exceptions no JSF de forma genérica não é fácil. Eu consegui fazer isso criando uma classe herdando de ActionListenerImpl, sobreescrevendo o método processAction e incluindo uma chamada ao método processAction() da classe pai dentro de um bloco try…catch. Dentro desse catch é feito um addMessage() com a mensagem a ser mostrada e também é feito o redirecionamento para a página de erro.

Outro problema é que o FacesMessage não suporta a internacionalização de mensagens, por isso foi criada a I18nFacesMessage que implementa esse recurso.

O exemplo do JSF (JavaServer Faces) – Exception Handler pode baixado clicando aqui.

Esse projeto foi feito no Eclipse 3.3 Europa, basta utilizar o recurso de import dele para poder rodar ele.

Utilize o Tomcat 6.0.16.

Até mais,
Roberto

Share

Aprendendo JSF

31/agosto/2008 - Java, Post Antigos

Olá

Após muito tempo sem postar, estou de volta para contar que eu estava aprendendo JSF (JavaServer Faces) utilizando a implementação MyFaces. Achei muito interessante o esquema de eventos e listeners, ficou parecido com ASP.NET (não sei se isso é bom ou ruim), pra quem estava acostumado com as actions do Struts é uma novidade e tanto. A qualidade e a quantidade de componentes visuais impressiona, no MyFaces é possivel encontrar vários que já utilizam AJAX. Mas o componente que mais me deixou impressionado é esse aqui para fazer upload de arquivo.

O JSF também faz parte da especificação do Java EE 5 assim como o JSP e o EJB 3, ao contrário do Struts.

Gostei muito dele e espero ter mais tempo pra brincar com os validators e converters.

O arquivo com o mini projeto pode ser baixado aqui. Foi feito com o Eclipse, JBoss 4.x e o MySQL. Aproveite e coloquei o Hibernate 3 na parada.

Até mais,
Roberto

Share