Validazione in JSF

Il processo di validazione delle form utente che mette a disposizione JSF 2.0 consente di creare e registrare validatori custom specifici per le esigenze di progetto. Per farlo sono necessarie le seguenti attività:

  • generazione della classe di validazione che dovrà implementare l’interfaccia javax.faces.validator.Validator la quale prevede un solo metodo validate();
  • registrazione della classe come validatore JSF attraverso la decorazione della stessa con l’annotazione @FacesValidator mer mezzo della quale gli si assegna un id univoco;
  • associazione del validatore al campo specifico della form attraverso il tag <f:validator>.

Interfaccia

Iniziamo innanzitutto definendo l’interfaccia che utilizzeremo nel nostro esempio. Si tratta di una semplicissima form di registrazione che prevede esclusivamente i campi Nome ed Email.

Si noti che la form prevede tre colonne, la terza delle quali è destinata a contenere gli eventuali messaggi di errore destinati al componente di input. Questo lavoro è svolto dal tag <h:message> al quale è stato dato una colorazione rossa per evidenziare il messaggio.

Come detto nell’introduzione è stato inoltre inserito un custom validator per il campo email con id it.javaboss.emailValidator.

Validatore

Come anticipato il validatore è una classe java che implementa il metodo validate() dell’interfaccia javax.faces.validator.Validator. Nell’esempio mostrato è utilizzata una regular expression per la validazione dell’email.

Sorvoliamo la descrizione della regular expression che trovate su internet, si noti che è stato utilizzato un blocco di codice statico per la sua compilazione. Questo perché l’oggetto è creato nuovo ad ogni richiesta di validazione. Inoltre il validatore prevede la possibilità di inserire nel campo una lista di email separate da punto e virgola. Il messaggio di errore è recuperato dal resource bundle con chiave validator.email.error e prevede un parametro, indicato con {0}, che identifica lo specifico indirizzo email che non ha passato il processo di validazione:

La form con i messaggi di errore personalizzati apparirà nel modo seguente:

jsf valitator form Codice Sorgente

Il codice sorgente completo è scaricabile qui jsf-validator.