mercoledì 15 maggio 2013

PrimeFaces gestire messaggi di tipo p:growl e p:messages

Dalla versione 3.3 di prime faces è possibile condizionare la comparsa di messaggi in formato tradizionale (p:messages) oppure a scomparsa temporale (p:growl).
Nel mio caso avevo il seguente scenario.
Un form con un p:messages dichiarato e al suo interno un p:dialog.
Quando si verificava un errore di validazione nel p:dialog doveva comparirmi un p:message (interno al dialog) più a livello di pagina un p:growl (per comodità dell'utente).
Quindi non doveva essere visibile il p:messages standard della pagina che doveva gestire casistiche di errore relative al form e non al dialog.
Nel p:dialog ho definito il p:message interno così:


<p:messages  for="erroreFascicolo"  showDetail="true" autoUpdate="true" closable="true" escape="false" />  


Nel caso di errore di validazione lato java inserisco l'errore in questo modo:

FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,"errore di validazione","");
FacesContext.getCurrentInstance().addMessage("erroreFascicolo", msg);


Sulla pagina invece ho definito i miei messaggi così:

<p:messages id="messages" globalOnly="true" showDetail="true" autoUpdate="true" closable="true" />  
<p:growl id="growl" for="erroreFascicolo" showDetail="true" autoUpdate="true" escape="false" life="15000"/>

L'attributo globalOnly="true" (di default è pari a false) significa che quel messaggio sarà visualizzato solo nel caso di messaggi aggiunti al contesto jsf senza id.
Quindi tutti i messaggi aggiunti genericamente sono gestiti dal p:messages mentre il p:growl si gestisce soltanto gli errori con id "erroreFascicolo".

Nessun commento:

Posta un commento