Spring MVC - Validator


Objectifs

  • Comprendre le mécanisme utilisé par Spring MVC pour la validation d'un formulaire.
Validation

La validation ne fait pas partie du module Spring MVC mais elle est déléguée à l’infrastructure de validation fournie par Spring et ceci en implémentant l’interface org.springframework.validation.Validator.
Deux types de validaton sont possibles :
  • Programmatique validation : les règles de validation sont implémentées dans une classe java.
  • Déclaratif validation : les règles de validation sont déclarées dans un fichier de configuration.
Le schéma ci-dessous décrit le cycle de traitement d’une requête par Spring MVC. Ce qui nous intéresse, à ce niveau, est l’étape de validation du formulaire, mais ceci n’empêche pas de décrire tout le cycle à titre de rappel.

validationschema.jpg
  1. Le contrôleur reçoit la requête qui initialise le form  et crée la commande.
  2. onSubmit() le form ou la command, initialisée précédemment, est rempli par les valeurs  des champs ,dans la jsp, et passé ensuite au validator.
  3. Le validator vérifie les données dans la commande, s’il n’y a pas d’erreur la servlet validator retourne le contrôle directement au Controller Servlet qui fait le traitement demandé avant de forward vers la page résultat (success, failure ….) selon le traitement.
  4. En cas d’erreur, détectée par le validator, ce dernier appel la page jsp, le formulaire contient les données précédemment saisies. La liste des messages d’erreur sera affichée en utilisant les balises spécifiques de spring MVC.
Programatique validation

Pour créer un validator il faut :

1 configuration du fichier servlet.xml :
On doit ajouter le paramètre validator au contrôleur et déclarer le validator.

validatorconfig.jpg

Ajouter la déclaration des fichiers ressources contenant les messages d’erreur.

bundleconfig.jpg

2 Créer la clase validateur 
La classe de validation  doit implémenter l’interface Validator.

 validationclass.jpg

Il faut donc implémenter les 2 méthodes :
  1. La méthode supports : qui permet de définir le type d'objet que le validateur sait valider. Cette méthode prend en paramètre, la classe de l'objet command.
  2. La méthode validate reçoit l'objet à valider. La méthode validate dispose de l'objet Errors qui servira à enregistrer les messages d'erreurs.
Pour signaler une erreur, la méthode validate(), utilisera la méthode reject() ou rejectValue() pour signaler une erreur à un champ spécifique.

3 Modifier la page jsp pour afficher les messages d’erreurs.
jsppage.jpg


Déclaratif validation

Spring MVC ne permet pas de faire des validations du coté client, pour ceci il faut utiliser un des validateurs proposé par  Spring Modules.
Spring Modules est un ensemble d’outils qui permet d’intégrer à Spring de nouvelles fonctionnalités telle que Validation, Ant, OSWorkflow
Pour la validation, Spring Modules propose trois validateurs :
  • Jakarta Commons Validator.
  • Valang.
  • Bean Validation Framework.
Vous pouvez trouver comment utiliser ces validators dans la documentation du Spring Modules.

Références
Expert Spring MVC and Web Flow by Seth Ladd, Darren Davison, Steven Devijver, and Colin Yates.
Spring in Action by Graig Walls Ryan Breidenbach

Aucun commentaire: