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 JSF. Não iremos entrar em detalhes de configuração de idiomas que ficará para um próximo artigo. Veja na continuação…
Criando os arquivos .properties
Verifique o artigo Criando arquivos Resource Bundles em um projeto Java para maiores informações.
Configurando o faces-config.xml
Criados os arquivos, chega o momento de alterar o arquivo faces-config.xml. Acrescente as linhas de código destacadas abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?xml version="1.0" encoding="UTF-8"?> <faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" version="2.0"> <application> <resource-bundle> <base-name>br.com.mauda.seminario.cientificos.view.properties.messages</base-name> <var>msgs</var> </resource-bundle> <resource-bundle> <base-name>br.com.mauda.seminario.cientificos.view.properties.labels</base-name> <var>labels</var> </resource-bundle> </application> </faces-config> |
Assim para cada arquivo de resource bundle que for necessário criar, deve ser utilizado a tag <resource-bundle>, com o <base-name> o package do arquivo + o nome sem a extensão properties. Para utilizar nas páginas JSF precisamos dar um nome a esse arquivo, assim é utilizado a tag <var> com o nome que será utilizado nas páginas JSF.
No caso do exemplo criamos duas tags uma para cada arquivo com o nome das variáveis msgs e labels, respectivamente. Um ponto muito positivo ao declarar o resource bundle no arquivo faces-config.xml é que ele evita a declaração <f:loadBundle> em todas as páginas xhtml, que realiza o carregamento de um arquivo properties para o servidor de aplicação, pois com a declaração no faces-config.xml no momento de iniciar o servidor esse arquivo já é carregado, evitando o carregamento posterior e permitindo que os labels estejam disponíveis já no primeiro carregamento de páginas.
Adicionando labels e messages a um arquivo xhtml
Abra o arquivo index.xhtml para que possamos trocar os textos ali presentes por rótulos relacionados aos arquivos resource bundle:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui"> <h:head> <title>#{labels['titulo.seminariosAcademicos']}</title> </h:head> <h:body> <p:outputLabel value="#{labels.index}"/> <br/><br/> <p:outputLabel value="#{msgs['IN0001']}"/> </h:body> </html> |
Existem duas maneiras de utilizar os labels do resource bundle nas páginas xhtml
A mais comum é esta:
#{nomeVarResource.nomeLabel}, onde nomeVarResource é o nome dado no faces-config.xml ao arquivo properties e o nomeLabel é o label que está sendo utilizado. Por exemplo, #{labels.index}
Outra forma é quando existe um ponto (.) no label, por exemplo, titulo.seminariosAcademicos
#{nomeVarResource[‘nomeLabelComPonto’]}, onde nomeVarResource é o nome dado no faces-config.xml ao arquivo properties e o nomeLabel é o label que está sendo utilizado, sendo que tem que estar entre aspas simples. Por exemplo, #{labels[‘titulo.seminariosAcademicos’]}
Esta última forma também pode ser utilizada para labels que não tenham ponto, como por exemplo #{msgs[‘IN0001’]}
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