Cursos / Informática para Internet / Desenvolvimento Web I / Aula

arrow_back Aula 08 - JSTL – Internacionalização, Taglib functions e expression language

A taglib I18N III

Considerando que para uma determinada parte do nosso JSP, poderíamos não querer usar o arquivo de propriedades definido pela tag fmt:setBundle, mas sim um outro arquivo de mensagens específico somente para essa parte do JSP, por exemplo chamado messages2. Para isso ele deve ser criado dentro de um pacote com o nome messages2_pt_BR.properties com seus valores próprios para cada chave, como mostrado a seguir

Arquivo de propriedades alternativo

Dessa forma, a mensagem final não seria mais Alô Mundo!!!, e sim Alô Mundo 2!!!, como pode ser visto no JSP modificado.

Uso de arquivo de propriedades diferente em parte específica do JSP.

Perceba que no JSP acima, na Figura 5, estamos utilizando inicialmente o messages_pt_BR.properties, como definido na Linha 6 e a mensagem “Alo Mundo!!!” deve aparecer no HTML gerado resultando do Linha 7. Entretanto logo em seguida (Linha 9) usamos o <fmt:bundle> com o basename=”aula08.messages2” o que implica que qualquer <fmt:message> que estiver dentro dessa tag bundle usará o arquivo messages2_pt_BR.properties como fonte de dados.

Uma vez que explicamos a funcionalidade da tag fmt:bundle e fmt:setBundle, vamos, agora, mostrar e explicar cada um dos seus atributos.

Atributo Descrição Obrigatório Valor default
basename Nome do arquivo de propriedades (sem localidade e extensão “.properties”). Sim
prefix String que será pré-concatenada ao valor da chave da mensagem (com o “.” no final). Não
Quadro 3 - String que será pré-concatenada ao valor da chave da mensagem (com o “.” no final).
Atribuição Descrição Obrigatório Valor default
basename Nome do arquivo de propriedades (sem localidade e extensão “.properties”). Sim
var Nome do arquivo de propriedades (sem localidade e extensão “.properties”). Não
scope Escopo da variável armazenada em var. Não Página
Quadro 4 - Atributos da tag fmt:setBundle

Em ambas as tags, basename é o atributo que define o nome do arquivo de propriedades. Para a tag fmt:bundle, o atributo prefix define uma String que será concatenada no início de cada String usada como chave pela tag fmt:message. No exemplo anterior, nós usamos como chave “message.helloWorld”. Entretanto, se tivéssemos definido o atributo prefix na tag fmt:bundle como “message.”, poderíamos ter usado como chave apenas a String “helloWorld”. Os demais atributos, mais uma vez, são nossos velhos conhecidos.

A próxima tag é a tag fmt:message, que possui uma tag auxiliar, que é a tag fmt:param. Nós já vimos, brevemente, a tag fmt:message em uso quando falamos de fmt:bundle e fmt:setBundle. Agora, veremos a tag fmt:message usando a tag fmt:param. A tag fmt:message procura por mensagens localizadas dentro de um arquivo de propriedades. Essa tag, como dito, pode conter a tag fmt:param no seu corpo que especificam valores para os parâmetros definidos na mensagem. Isso quer dizer que podemos ter mensagens parametrizadas.

Na Listagem 4, podemos ver um exemplo de uso da tag fmt:message, como a tag fmt:param.

Listagem 4 - Código JSP que procura por uma chave chamada message.goodMorning com um parâmetro que será substituído pelo valor definido por fmt:param.

Aqui, vale explicar o que seria substituir o parâmetro da mensagem da chave “message.goodMorning” (linha 01) pelo valor do parâmetro especificado pela tag fmt:param (linha 02). Para que isso seja possível, o valor da chave “message.goodMorning”, no arquivo, deve ser algo como:

message.goodMorning=Bom dia {0}!!!

Isso permite que no lugar de {0} terei o valor que foi definido na tag fmt:param. Um exemplo mais prático seria usar como parâmetro o nome do usuário logado no sistema. Uma mensagem pode ter vários parâmetros, cujos valores são indexados por um número entre os “{” e “}”.

Uma vez que explicamos a funcionalidade da tag fmt:message e fmt:param, vamos, agora, mostrar e explicar cada um dos seus atributos.

Atribuito Descrição Obrigatório valor default
key Nome da chave a ser procurada no arquivo de propriedades. Não Corpo
var Nome da variável que armazenará a mensagem. Não
scope Escopo da variável que armazenará a mensagem (indicada no atributo var). Não Página
Quadro 5 - Atributos da tag fmt:message
Atributo Descrição Obrigatório Valor default
value Valor que será substituído em uma mensagem parametrizada. Sim Corpo
Quadro 6 - Atributos da tag fmt:param

O atributo key é o nome da chave no arquivo de propriedades que corresponde à mensagem a ser exibida. Key pode ser uma String ou uma expressão que resulte em uma String. Já o atributo value da tag fmt:param define o valor que será usado para substituir os parâmetros da mensagem. É importante notar que a tag fmt:param só possui um value. Como uma mensagem pode ter N parâmetros ( {0}, {1}, {2}, ..., {n} ), pode ser necessário que haja mais de uma utilização dessa tag para preencher todos os parâmetros da mensagem, como visto na Listagem 5. A ordem da tag fmt:param também deve obedecer à ordem definida no arquivo de propriedades para que seja feita a substituição correta. O atributo value pode ser uma String ou uma expressão.

Listagem 5 - Código JSP que procura por uma chave chamada message.goodMorning com dois parâmetros, que serão substituídos pelos valores definidos pelas tags fmt:param, na ordem em que aparecem.

No caso da Listagem 5, o valor da chave “message.goodMorning” no arquivo de propriedades seria algo como:

message.goodMorning=Bom dia {0} e {1}!!!

Versão 5.3 - Todos os Direitos reservados