Olá Pessoal, tudo bom?
O artigo de hoje vem realizar a configuração dos arquivos de mensagens/rótulos ou também chamados Resource Bundles dentro de uma aplicação Java. Assim como o carregamento desses arquivos dentro do projeto e sua utilização. Veja na continuação…
Resource Bundles
Ao criar uma sistema Java, diversos rótulos, mensagens, textos e outras Strings são criadas, e muitas vezes, essas Strings se repetem em diversos pontos do sistema. Uma forma de reusar esses textos é através dos arquivos com extensão properties, também conhecidos como Resource Bundles. Dessa forma são arquivos que contém as mensagens/rótulos de uma aplicação. São armazenamos como uma tupla label=mensagem em cada linha, onde o label não deve conter caracteres especiais, espaços em branco ou caracteres com acento. Um exemplo de arquivo de resource bundle está descrito abaixo.
1 2 3 4 5 6 |
#Mensagens de Erro da Aplicação de Seminarios Cientificos ER0003=Entidade nula, favor preencher as informações corretamente ER0010=Nome da Área Cientifica não está preenchida, por favor realize o seu preenchimento. #Mensagens de Sucesso da Aplicação de Seminarios Cientificos IN0001=Operação realizada com sucesso! |
A cerquilha, hashtag (#) possui o papel de linha comentada.
Um detalhe importante a respeito dos arquivos de resource bundle é que uma vez iniciada a aplicação Java as alterações nas informações internas desse arquivo são pertinentes por toda a vida da aplicação. Ou seja, para as alterações que forem realizadas após o inicio da aplicação tenham efeito, é necessário reiniciar a aplicação. O mesmo ocorre para um servidor de aplicação, JBoss por exemplo. Para que as alterações tenham efeito é necessário reiniciar o servidor.
Criando os arquivos .properties
A primeira atividade a ser realizada é criar um package para armazenar os seus arquivos, por exemplo br.com.mauda.seminario.cientificos.view.properties.
Agora vamos criar dois arquivos. O primeiro arquivo de nome messages.properties que terá a responsabilidade de armazenar as mensagens da aplicação. O segundo arquivo de nome labels.properties que terá a responsabilidade de armazenar os rótulos do sistema, nome campo, títulos de telas, entre outros.
Após criado os arquivos, insira algumas mensagens e rótulos nos arquivos:
labels.properties
1 2 3 4 5 |
#Rotulos da Aplicação de Seminarios Cientificos areaCientifica=Área Cientifica index=Página Inicial da aplicação de Seminários Cientificos nome=Nome titulo.seminariosAcademicos=Seminários Acadêmicos |
messages.properties
1 2 3 4 5 6 |
#Mensagens de Erro da Aplicação de Seminarios Cientificos ER0003=Entidade nula, favor preencher as informações corretamente. ER0010=Nome da Área Cientifica não está preenchida, por favor realize o seu preenchimento. #Mensagens de Sucesso da Aplicação de Seminarios Cientificos IN0001=Operação realizada com sucesso! |
Como pode ser observado no labels.properties é possível adicionar um ponto (.) no label para diferenciar uma informação, como por exemplo, titulo.seminariosAcademicos, indicando que esse label pertence aos titulos.
Obtendo as informações dos arquivos .properties
Para obter as informações dos arquivos properties devem ser utilizadas classes java.util.ResourceBundle. Essas classes armazenam as informações que estão contidas em um determinado arquivo properties através do método getBundle(String nomeArquivo). Existe uma sobrecarga desse método onde é possível indicar o Locale (região do mundo) que deseje recuperar o arquivo. Mas isso fica pra uma outra hora.
O código abaixo indica como recuperar o arquivo messages.properties que foi criado na seção anterior:
1 |
private static final ResourceBundle messagesRB = ResourceBundle.getBundle("br.com.mauda.seminario.cientificos.view.properties.messages"); |
Foi adicionado em um atributo static e final, pois pela forma que o arquivo .properties não pode ser alterado durante a execução da aplicação, também o atributo não deveria.
Uma vez carregado o arquivo .properties em um atributo ResourceBundle dois métodos são muito utilizados. O primeiro é o método containsKey(String label), o qual indica se determinado label está presente no arquivo properties. O segundo método getString(String label), o qual recupera a mensagem a partir do label informado. Caso o label não exista é lançada a exception java.util.MissingResourceException.
Abaixo um método que tenta recuperar uma informação do messagesRB criado acima:
1 2 3 4 5 6 7 |
public static String getMessage(String mensagem) { if (messagesRB.containsKey(mensagem)) { return messagesRB.getString(mensagem); } //Logar no console uma mensagem indicando que não achou o rotulo return ""; } |
Fazendo um método com a preocupação acima, sua aplicação não irá quebrar, apenas não exibirá determinado label ou mensagem na tela. Muito melhor do que estourar sua aplicação.
finally{
Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!
Até um próximo post!
Leave a Reply