Criando uma classe mensageira em JSF
Uma coisa que sempre gosto de fazer quando estou programando usando JSF, é criar uma classe mensageira para facilitar o trabalho com mensagens (de erro, informação e etc..).
Essa classe, me livra do trabalho de:
- Obter repetidamente o FacesContext.
- Criar repetidamente o objeto FacesMessage.
- Escrever repetidamente as mensagens.
Agora criaremos um arquivo chamado “messages.properties” dentro da raiz da aplicação, onde poderemos definir as mensagens da nossa aplicação, bem como chaves para poder utiliza-las. O conteúdo desse arquivo consiste em: chave = valor Exemplo: bdError = Erro ao acessar banco de dados! Quando precisarmos utilizar nosso mensageiro, basta usar: Mensageiro.errorMsg(“bdError”); E nossa classe irá procurar dentro do messages.properties um valor que tenha como chave “bdError”, no nosso exemplo ele adicionaria a mensagem “Erro ao acessar banco de dados!” ao nosso contexto. Bem simples né? Bom, agora iremos entender a nossa classe mensageira:
- Primeiro nós temos o objeto estático ResourceBundle que utilizaremos para efetuar as buscas das mensagens através dos valores passado no arquivo messages.properties. Repare que eu passo o nome do arquivo sem a extensão .properties e a localização dele, no nosso caso utilizamos o método getViewRoot do FacesContext para obter a localização. O interessante é que todas essas mensagens possuem suporte a internacionalização, você pode definir dentro do messages.properties mensagens personalizadas para cada locale, por isso utilizamos o método getLocale.
- Os métodos: infoMsg e errorMsg são os responsáveis pelas mensagens, recebem como parâmetro uma string, que será utilizada como chave para encontrar o valor da mensagem.
- Na linha seguinte ele faz com que a variável ‘msg’ que antes possuía a chave receba como valor a própria mensagem que é buscada através do método getString do objeto ResourceBundle.
- Nas próximas linhas não tem muito o que explicar, crio o objeto FacesMessage com a mensagem conseguida anteriormente, obtenho a instancia do FacesContext e adiciona a mensagem.
- E fim, você está pronta p usar o seu mensageiro.