Formattazione
di numeri e date
Abbiamo
precedentemente visto che la JSTL comprende un
tag, il <c:out>, che consente di stampare
dati sulla pagina web. Nel caso di date o numeri
il dato viene visualizzato in base ad un formato
di default che spesso può non essere soddisfacente
per le esigenze della propria applicazione, Se
si desidera avere un maggiore controllo sul formato
di output dei numeri si può utilizzare
il tag <fmt:formatNumber>.
Il formatNumber rende in output il numero in base
al locale corrente nella forma di default per
il locale stesso se non diversamente specificato.
Ha numerosi attributi come riportati nella tabella
seguente:
L'uso
degli attributi consente di soddisfare le più
comuni esigenze nella formattazione di un numero.
Si può scegliere di visualizzare un numero,
una percentuale o una valuta in base all'attributo
type, controllare il numero di decimali e di interi
da visualizzare, scegliere i simboli da utilizzare
per la rappresentazione delle valute e così
via. Se si vuole un controllo completo sul formato
di output è possibile utilizzare l'attributo
pattern facendo l'override delle specifiche del
locale corrente.
Il tag formatDate è l'analogo del formatNumber
per le date. Consente di visualizzare in output
una data scegliendo tra i molteplici formati possibili.
Gli attributi del tag sono i seguenti:
L'attributo
value è obbligatorio e deve essere una
variabile di tipo java.util.Date e non una stringa.
Questo è molto importante da sottolineare
per evitare errori nell'utilizzo del tag.
Il tag può visualizzare solo la data o
anche le informazioni di ore minuti e secondi
contenuti in essa specificandolo mediante l'utilizzo
dell'attributo type.
Esistono formati predefiniti per le date e per
la rappresentazione di ore e minuti, che vanno
da formati compatti a formati estesi. Altrimenti
come per i numeri è possibile usare un
pattern se si vuole avere il totale controllo
sulla rappresentazione.
Parsing
di numeri e date
Abbiamo
visto i tag che effettuano la formattazione di
numeri e date da visualizzare in una pagina web.
La JSTL fornisce anche tag che eseguono il compito
inverso, cioè quello di leggere stringhe
e trasformale in numeri o date in base ad un formato
desiderato. Nel caso dei numeri esiste la parseNumber
che consente di interpretare numeri espressi sottoforma
di stringhe nei formati più disparati.
Per default il tag interpreta la stringa e la
trasforma in numero in base alle impostazioni
del locale corrente fornito dal browser. Le regole
del parsing possono però essere cambiate
utilizzando gli attributi del tag che sono i seguenti:
E'
possibile specificare ad esempio che si vogliono
solo le cifre intere del numero o che si vuole
usare per il parsing un locale specifico in luogo
di quello corrente. Come sempre il massimo del
controllo sulla formattazione lo si può
ottenere mediante l'utilizzo di un pattern.
L'analogo
per le date è il parseDate che consente
di trasformare una stringa in una variabile di
tipo java.util.Date in base al formato desiderato.
La gran parte degli attributi del tag sono analoghi
a quelli del parseNumber:
Come
per gli altri tag anche il parsing delle date
è effettuato di default in base al locale
corrente fornito dal browser. Si può ovviamente
forzare una diversa modalità di parsing
mediante l'uso degli attributi. Il type consente
di selezionare se si vuole fare il parsing in
una Date o in un Time o entrambi. In accordo con
gli attributi dateStyle e timeStyle è possibile
effettuare il parsing di Date e Time nei formati
predefiniti.
Il modo più utile è anche in questo
caso l'uso del pattern che consente di specificare
nel dettaglio il formato della data di cui fare
il parsing.
Impostazione
del Locale
Tutti
i tag visti in precedenza per default prendono
il locale del browser come locale predefinito
per visualizzare o effettuare il parsing di date
e numeri. E' però possibile impostare un
locale diverso da quello del browser utilizzando
il tag setLocale. Questo può essere utile
ad esempio nel caso in cui si voglia che l'utente
possa scegliere la lingua con la quale utilizzare
l'applicazione.
Il tag setLocale è di uso piuttosto immediato
e i suoi attributi sono:
Il
locale specificato nell'attributo obbligatorio
value diventa il locale per lo scope fissato dall'attributo
scope (page è il default).
Internazionalizzazione
Oltre
che diversi formati di numeri e date , realizzare
una applicazione internazionalizzata significa
anche visualizzare il testo nelle diverse lingue
previste. Java fornisce tutti gli strumenti adatti
allo scopo quali i ResourceBundle e il Locale.
La JSTL fornisce alcuni tag che consentono di
visualizzare testo acquisendolo da resource bundle
personalizzati per i diversi locale previsti.
I tag in questione sono fmt:message,fmt:param,fmt:bundle
e fmt:setBundle.
fmt:message consente di visualizzare un testo
identificato da una key preso dal resource bundle
di riferimento per il locale desiderato.
Il
tag fmt:param consente di definire dei parametri
variabili da inserire in un messaggio mentre i
tag fmt:bundle e fmt:SetBundle consentono di impostare
il resource bundle da cui prelevare i messaggi.
Il primo agisce solo nella parte di pagina inclusa
nel tag mentre il secondo lo imposta definitivamente.
Conclusioni
Abbiamo fatto nei paragrafi precedenti una panoramica
sui tag di utilizzo più frequente messi
a disposizione dalla JSTL per la formattazione
di date e numeri e per la gestione dell'internazionalizzazione.
Questi tag sono veramente utili poiché
assolvono in maniera molto semplice da utilizzare
ad un compito piuttosto gravoso in una applicazione
che è quello della gestione dei diversi
formati di dati e testo. La carrellata presentata
ha lo scopo di portare a conoscenza dello sviluppatore
che nella J2EE esistono tutti gli strumenti per
gestire questa problematica senza dover scrivere
codice custom e tanto meno pagine JSP piene di
scriptlet. Chiaramente per un reference dettagliato
sui tag presentati si faccia riferimento a [2],
[3].
Bibliografia
[1] Bryan Basham, Kathy Sierra, Bert Bates - "Head
First - Servlet & Jsp", O'Reilly, 2004
[2] Autori Vari - "The J2EE 1.4 Tutorial
", Sun Microsystems, 2003
[3] Shawn Bayern - "JSTL in Action"
, Manning Pubblications Co., 2004
Alfredo Larotonda, laureato in Ingegneria Elettronica,
lavora da diversi anni nel settore IT. Dal 1999
si occupa di Java ed in particolare dello sviluppo
di applicazioni web J2EE. Dopo diverse esperienze
di disegno e sviluppo ora si occupa in particolare
di aspetti architetturali per progetti rivolti
al mercato finanziario ed industriale. Ha conseguito
le certificazioni SCJP, SCWCD 1.3, SCWCD 1.4,
SCBCD.
|