10 ottobre 2006

JSF E I MESSAGGI DEI CAMPI OBBLIGATORI

per ottenere i messaggi sui campi obbligatori si deve:

  1. inserire il riferimento ai messaggi con showDetail="true" es: <t:messages showDetail="true" showSummary="true" errorClass="error"/>
  2. sui campi obbligatori, inserire required="true"
  3. per ogni campo, inserire la relativa label: se non si inserisce la label, per riferimento al campo, nel messaggio di errore, viene messo il valore di "id" del tagse, invece, è presente la label, viene messo il value della label
ES1:
<t:messages errorClass="error"/><h:inputText id="codcliente" value="xxx" required="true" />
Errore: "Errore di convalida"

ES2:
<t:messages showDetail="true" showSummary="true" errorClass="error"/>
<h:inputText id="codcliente" value="xxx" required="true" />
Errore: "Errore di convalida "codcliente": Il valore è obbligatorio"

ES3:
<t:messages showDetail="true" showSummary="true" errorClass="error"/>
<h:outputLabel for="codcliente" value="Codice Cliente" />
<h:inputText id="codcliente" value="xxx" required="true" />
Errore:"Errore di convalida "Codice Cliente": Il valore è obbligatorio"


NB: Piu' in generale:
showSummary: il valore di default è "true". Mostra il messaggio "Errore di convalida".
showDetail: il valore di default è "false". Mostra il nome del campo in cui "nasce" l'errore e il motivo dell'errore.

showSummary=true showDetail=false: da utilizzare quando l'errore viene riportato accanto al campo, quando l'errore è ovvio ed il messaggio deve essere breve
ES errore: Errore di convalida

showSummary=true showDetail=true: da utilizzare quando l'errore viene riportato in fondo o in una lista di errori, il messaggio è completo
ES errore: Errore di convalida "Codice Cliente": Il valore è obbligatorio

showSummary=false showDetail=true: da utilizzare quando l'errore viene riportato in fondo o in una lista di errori, il messaggio è più breve
ES errore: "Codice Cliente": Il valore è obbligatorio

showSummary=false showDetail=false: errore non mostrato
ES errore: ""


NOTA: con le h:messages, almeno con la configurazione che ho testato io, non sono riuscito a visualizzare la LABEL nell'errore, ma solo l'id del campo stesso. Quindi, senza le t:messages, il punto 3 non viene rispettato