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.
- Le contrôleur reçoit la requête qui initialise le form et crée la commande.
- 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.
- 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.
- 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.
Ajouter la déclaration des fichiers ressources contenant les messages d’erreur.
2 Créer la clase validateur
La classe de validation doit implémenter l’interface Validator.
Il faut donc implémenter les 2 méthodes :
- 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.
- 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.
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
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:
Enregistrer un commentaire