JSF Mini Livro – Dicas, conceitos e boas práticas

Internacionalização como boa prática

Muitas pessoas ao ouvir sobre internacionalização já pensam logo de cara: “Meu projeto vai ser acessado apenas na minha empresa e tudo em português. Qual seria a vantagem de internacionalizar?”. Ao criar um arquivo com as chaves de todas as mensagens da sua aplicação, a aplicação está sendo preparada não só para uma mudança de idioma, mas está evitando que haja mensagens repetidas espalhadas por todas as páginas do sistema.

Quando centralizamos as mensagens do sistema uma mudança de terminologia fica mais fácil e menos agressiva ao sistema. Imagine um sistema onde temos 50 vezes a palavra Carro sendo exibida e seja necessário alterar essa palavra para Veículo. Sem um arquivo que contenha todas as mensagens do seu sistema, o desenvolvedor teria que vasculhar todas as páginas procurando pela palavra Carro. Ao final da tarefa o desenvolvedor estaria cansado e seu trabalho sujeito a erros.

Outra vantagem de se ter um arquivo contendo as mensagens do sistema é que caso alguma mensagem tenha ido errada para produção após o deploy, não seria necessário um novo deploy. A solução mais rápida e fácil seria alterar apenas o arquivo de mensagens, não haveria um stress de ter que gerar um novo arquivo EAR/WAR apenas para corrigir um texto.

Para criar um arquivo de mensagens precisamos adicionar ao arquivo “faces-config.xml” o valor abaixo:

<application>
	<resource-bundle>
		<base-name>messages</base-name>
		<var>msgs</var>
	</resource-bundle>
</application>

O valor presente na chave “<base-name>” indica o arquivo físico onde estarão as mensagens; o arquivo deve ter sua extensão do tipo “.properties” e em nosso caso seria “messages.properties”. Esse arquivo deve ficar dentro da pasta “src da sua aplicação, a mesma pasta onde se encontram as classes Java. Podemos criar várias subpastas se for necessário ter vários arquivos de mensagens diferentes. O valor presente na chave <var> indica como o valor que pelo qual nossa chave será referenciada em nossa view. No código abaixo podemos ver como ficaria um arquivo de mensagens.

carro=Carro
carroTanque=Tanque
carroPorta=Porta

Para acessar uma mensagem descrita no código acima basta colocar a EL a seguir em sua página: “#{msgs.carro}”. Uma solução bem simples e que nos poupa diversas repetições de palavras e nos ajuda quanto à velocidade de refatoração.

Outra vantagem de um arquivo de mensagens é que é possível sobrescrever as mensagens padrões do JSF. Quando colocamos o atributo required=“true” em um componente “h:inputText” a seguinte mensagem é exibida se deixarmos o campo vazio: “ValidationError: Value is required”. Para um usuário final uma mensagem desse tipo poderia causar um sentimento de desconforto e de que o sistema não é bom, ou que o sistema não está funcionando corretamente.

Para fazer com que o seu arquivo de mensagens possa conter as mensagens de erro default do JSF, altere o seu arquivo “faces-config.xml” e deixe-o como o código abaixo:

<application>
	<resource-bundle>
		<base-name>messages</base-name>
		<var>msgs</var>
	</resource-bundle>
	<message-bundle>messages</message-bundle>
</application>

Repare que temos a chave “<message-bundle>” presente no arquivo “faces-config.xml”; nessa chave estamos indicando que no arquivo “src/messages.properties” serão encontrados os valores para as mensagens padrões do JSF.

Adicione a chave “javax.faces.component.UIInput.REQUIRED=” ao arquivo de propriedades do projeto e escolha uma mensagem padrão de valor obrigatório. O valor informado para a chave “javax.faces.component.UIInput.REQUIRED” será exibido toda vez que um campo estiver marcado como “required” e não estiver preenchido na hora do submit.

A lista completa de mensagens se encontra na especificação JSF (referência 2.5.2.4).

79 Thoughts on “JSF Mini Livro – Dicas, conceitos e boas práticas

  1. Marcelo on May 2, 2013 at 12:09 am said:

    Ainda não li tudo, mas pelo que eu já vi estou achando excelente.
    Você poderia fazer também um mini livro de JPA.

    • uaihebert on May 2, 2013 at 9:13 pm said:

      Marcelo, boa noite.

      Já existe aqui no blog um mini livro de JPA. Existe também um chamado Consultas e Dicas só com diversas funções de Pesquisa no JPA.

      Até mais.

  2. Fagner on April 30, 2013 at 5:03 pm said:

    Parabéns pelo artigo. Esclareceu muitas dúvidas. Sucesso!

  3. Geverson R. Sarmento on April 24, 2013 at 2:49 pm said:

    Excelentes artigos! Good Job!

Comment navigation

 

Leave a Reply

Post Navigation