Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Greenpeace
Guida al framework Struts (11/15)
Scritto da Dario Guadagno il 30-01-2009 ore 09:38
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:
  1. button.aggiorna=Aggiorna
  2. button.conferma=Conferma
  3. ..
Il file ApplicationResource_en_En.properties sarà ad esempio del tipo:
  1. button.aggiorna=Update
  2. 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:
  1. Locale locale = this.getLocale(request); 
  2. MessageResources messages = servlet.getResources();
  3. 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:
  1. public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {
  2. ActionErrors errors = new ActionErrors();
  3. if ((username == null) || (username.length() < 1))
  4. errors.add ("username",new ActionError("errore.username.obbligatorio"));
  5. if ((password == null) || (password.length() < 1))
  6. errors.add("password",new ActionError("errore.password.obbligatoria"));
  7. return errors;
  8. }
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:
  1. < 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.
Precedente: I modelli di simulazione della NASA in un’infrastruttura di grid computing
Successiva: Come sarà l'hard disk nei prossimi cinque anni
Copyright Programmazione.it™ 1999-2013. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 2.772 secondi.