Cursos / Informática para Internet / Desenvolvimento Web I / Aula
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 |
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