JSF un anno dopo #13

Dec 25, 2010 13:30

Nell'ambito della conversione/validazione vengono inviati messaggi all'utente per informarlo se le cose vanno male. In realta` i messaggi possono essere creati anche autonomamente da questo. Un messaggio e` istanza di FacesMessage, classe che detiene tre caratteristiche: severity, summary e detail. Il FacesContext gestisce messaggi relativi a un componente e messaggi generici che in generale riguardano tutta la maschera. La severity puo` essere Info, Warn, Error o Fatal.
Se un Converter lancia una eccezione essa puo` contenere un messaggio che viene inviato all'utente. In questo caso la severity sara` Error. Se il messaggio non c'e` ne viene generato uno di default. Un Validator si comporta in modo simile con la ValidatorException, ma in questo caso il messaggio e` obbligatorio. Messaggi possone essere generati anche se il problema si verifica a valle della validazione, cioe` nella fase 4.
Per internazionalizzare i messaggi si segue questo schema:
  1. chiedere all'applicazione il nome del file di proprieta` messageBundle. Se non e` stato definito un nome usare quello di default cioe` ResourceBundle;
  2. chiedere a UIViewRoot il messageBundle con il nome del punto 1
  3. cercare mediante un identificatore predefinito dal componente se c'e` una variante internazionalizzata del messaggio. Se c'e` questa diventa il summary. Dato l'identificatore, aggiungere il suffisso "_detail" per trovare il dettaglio del messaggio stesso
  4. i messaggio possono contenere parametri (tipo {0} {1} ... ) che rappresentano dati di runtime forniti dal componente: ciascuno di questi parametri deve essere presente nel messaggio internazionalizzato
per visualizzare questi messaggi ci sono due componenti:
  • h:message visualizza i messaggi per un componente. Ha un attributo for in cui occorre specificare l'id del componente associato
  • h:messages visualizza tutti i messaggi della pagina. Ha un attributo globalOnly che se e` impostato a true fa si che si visualizzino solo i messaggi generali di tutta la form (quindi non specifici di un unico componente). C'e` anche un attributo layout che puo` essere table o list a seconda che si desideri per il rendering una tabella o un elesco puntato

jsf

Previous post Next post
Up