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

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

Formatação de datas e números IV

Percebeu a diferença trabalhada pela troca do fmt:formatNumber por c:out na questão 2 da Atividade 04? O que acontece quando usamos a tag c:out é que perdemos o separador de decimais, porém a última casa decimal do saldo de “Beltrano” foi exibida, ou seja, não há formatação com o c:out. O objeto que a tag c:out recebe é um java.lang.Double e seu método toString() retorna o texto do número sem formatação. Já a tag fmt:formatNumber espera receber um objeto do tipo java.lang.Number (Double é uma subclasse de Number) para, então, aplicar as formatações adequadas.

Vamos, agora, examinar todos os atributos da tag fmt:formatNumber para entendermos seu comportamento padrão e o que podemos fazer para customizar a formatação de um número.

Atributo Descrição Obrigatório Valor default
value O valor numérico a ser formatado. Não Valor definido no body da tag
type Define o tipo do valor especificado pelo atributo value. Os tipos válidos são: number, currency, percent. Não number
pattern Expressão customizada para formatação. Se for definido, sobrescreve os demais atributos de formatação. Não
currencyCode Código da moeda usado para formatar valores monetários, tais como USD, EUR. Não De acordo com o Locale
currencySymbol Símbolo da moeda ($, F). Não De acordo com o Locale
maxIntegerDigits Número máximo de dígitos a ser exibido da parte inteira do número. Não
minIntegerDigits Número mínimo de dígitos a ser exibido da parte inteira do número. Não
maxFractionDigits Número máximo de dígitos a ser exibido da parte fracionário do número. Não
minFractionDigits Número mínimo de dígitos a ser exibido da parte fracionário do número. Não
var Nome da variável que armazenará o número formatado. Não
scope Escopo da variável armazenada em var. Não Página
Quadro 8 - Atributos da tag fmt:formatNumber

Os atributos value, var e scope dispensam apresentação, pois são utilizados da mesma maneira que nas outras tags que já vimos. O atributo currencySymbol é o prefixo utilizado antes da descrição da moeda e pode receber valores diferentes, como Uousimplesmenteousimplesmente para dólares. Já o currencyCode é um atributo que segue as especificações definidas pelo ISO 4217 (http://pt.wikipedia.org/wiki/ISO_4217) e define o prefixo da moeda de acordo com as especificações. Ou seja, se o currencyCode for definido como “BRL”, por exemplo, automaticamente o prefixo R, padrão parao Brasil, será utilizado. Perceba que esse atributo sobrescreve o atributo currencySymbol. Aqui, vale a seguinte explicação: se o atributo type for definido como currency e o Locale estiver definido como pt BR, automaticamente, o valor formatado será exibido com R, padrão para o Brasil, será utilizado. Perceba que esse atriuto sobrescreve o atributo currencySymbol. Aqui, vale a seguinte explicação: se o atributo type for definido como currency e o Locale estiver definido como pt BR, automaticamente, o valor formatado será exibido com R. Da mesma forma, se o atributo type for definido como percent, o símbolo de % será exibido, automaticamente, para você.

Os demais atributos definem a quantidade de dígitos que serão exibidos na parte inteira e fracionária do número. Isso ajuda a, por exemplo, limitar o número de casas decimais a ser exibido. Se minFractionDigits for definido para 2 e o número a ser formatado for, por exemplo, 23,2, o valor exibido será 23,20. Por outro lado, se maxFractionDigits for igual a 2 e o número a ser exibido for 23,285, o resultado será 23,29. Perceba que houve um arredondamento, e não um truncamento do número, para o número mais próximo. Os atributos minIntegerDigits e maxIntegerDigits funcionam de forma similar.

Então, mais uma vez, muito fácil, não é?! Nada que um pouco de prática não resolva. Bom, chegamos ao fim da nossa explanação sobre a taglib fmt. Veremos agora a taglib functions (fn), que trata de manipulação de Strings e tamanho de coleções, e EL, que mostra como podemos acessar as variáveis de escopo de uma forma elegante e padronizada.

Versão 5.3 - Todos os Direitos reservados