Nella
puntata precedente abbiamo iniziato ad analizzare il processo di internazionalizzazione di un'applicazione in
Struts. Mostriamo un esempio delle righe di un generico
resource bundle:
button.aggiorna=Aggiorna
button.conferma=Conferma
..
Il file
ApplicationResource_en_En.properties sarà ad esempio del tipo:
button.aggiorna=Update
button.conferma=Confirm
Nello
struts-config.xml va indicato qual è il
resource bundle utilizzato dall'applicazione. I file di
properties così definiti vanno quindi installati nella cartella
/WEB-INF/classes dell'applicazione, rispettando la struttura di package dichiarata nella definizione.
All'atto dello start-up dell'applicazione i file vengono letti per valorizzare istanze della classe
org.apache.struts.util.PropertyMessageResources, memorizzate poi nel
ServletContext. Ciò garantisce la
possibilità di accedere ai resource bundle dalle Action, dagli ActionForm o dalle pagine JSP.
Con poche righe lo sviluppatore riuscirà, all'interno di una Action, a estrarre un valore da un resource bundle. Ecco un esempio:
Locale locale = this.getLocale(request);
MessageResources messages = servlet.getResources();
String value = messages.getMessage(locale,key);
Un'alternativa è costituita dall'uso delle classi ActionMessages e ActionErrors, utilizzate nella gestione dei messaggi di errore. Queste ultime ricevono come parametro la chiave della label da reperire e acquisiscono in automatico dal
resource bundle del locale corrente il valore della label stessa localizzata.
Un esempio è il metodo
validate di una
ActionForm, nel quale viene utilizzata la classe
ActionError per rappresentare un messaggio di errore, il cui valore localizzato viene reperito passando al costruttore la chiave corrispondente. Tornando all'esempio del form di login dei precedenti articoli, avremo:
public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {ActionErrors errors = new ActionErrors();
if ((username == null) || (username.length() < 1))
errors.add ("username",new ActionError("errore.username.obbligatorio"));if ((password == null) || (password.length() < 1))
errors.add("password",new ActionError("errore.password.obbligatoria"));return errors;
}
Per reperire le stringhe localizzate nelle pagine JSP si utilizza invece un custom tag della libreria struts-bean, il tag < bean:message >. L'utilizzo è banale, basta fornire come attributo la chiave corrispondente alla label che si vuole acquisire come nell'esempio seguente:
< bean:message key="label.username" />
Abbiamo terminato la parentesi sull'internazionalizzazione di un'applicazione. Nella prossima puntata affronteremo le potenzialità del
Validator, un potentissimo strumento messo a disposizione dal framework
Struts.