vers l'accueil formulaire de contact

Tutoriel Spring N°9 : formulaires Spring MVC

Après le tutoriel d’introduction à Spring MVC, découvrez pas à pas comment créer des formulaires avec Spring MVC. Comprenez la valeur ajoutée de la balise ’form’ de Spring. Mettez en œuvre la validation des données.

Ce tutoriel est un extrait de séances pratiques de la formation SPRING dispensée par Objis.

Les + objis
- 70% de travaux pratiques
- Clé USB avec tous les outils utilisés + Corrigés TPs
- Bilan pédagogique individuel + conseils

Liens utiles

- + de 100 tutoriaux java/jee Objis
- 10 tutoriaux spring framework objis
- Objis, spécialiste formation java depuis 2005
- Site officiel Spring IDE
- Site officiel Spring Source Tool Suite (STS)

Prérequis, outils et versions


- JDK 6
- Eclipse 3.3.2 europa Entreprise
- Spring 2.5.4
- Spring IDE 2.1.0

- Tutoriel Spring N°2 : injection de dépendances
- Tutoriel Spring N°8 : introduction Spring MVC

Pour ce Tutoriel, le plugin Eclipse Spring IDE doit être au préalable correctement installé. Le tutoriel ’Installation plugin Spring IDE’ vous permet de maîtriser l’installation de Spring IDE.

Objectifs

- Comprendre la stratégie de création de formulaires Spring MVC
- Internationalisation des messages texte (I18N)
- Comprendre la validation de formulaire avec la classe Validator
- Créer des écrans avec Spring MVC et le framework Tiles

Programme

- Partie 1 : Création d’un formulaire en 6 étapes
- Partie 2 : Validation des champs du formulaire
- Partie 3 : Formulaires et Annotations Spring 2.5
- Partie 3 : Validation formulaire avec le bean validation Framework (BVF)

Durée

1h.

Partie 1 : Création d’un formulaire

Cette partie est la suite du Tutoriel Spring N°8 : introduction Spring MVC . Dans cette partie, vous allez créer et gérer pas à pas un formulaire Spring MVC simple.

Le projet Eclipse est le suivant :

ETAPE 1 : Ecran d’authentification (JSP)

- Dans le répertoire WEB-INF/jsp, codez la page d’authentification : login.jsp.

REMARQUE : Notez que que le nom des champs texte (login, password) correspond exactement aux propriétés login , password de l’objet métier (ici Employe). Une opération de binding sera réalisé lors de la validation du formulaire.

ETAPE 2 : Code du controlleur de l’écran d’authenfification

RAPPEL : Chaque controlleur Spring MVC a pour rôle de retourner au DispatcherServlet un objet de type ModelAndView contenant à la fois la vue à afficher et les informations qui seront utilisée dans la vue.

INFO : Chaque écran de formulaire Spring est associé à un controlleur de type SimpleFormControleur. Ici :

— le controleur va utiliser le service EmployeManager pour rechercher l’utilisateur dont le login correspond au login composé sur l’écran.
— Le ’Model’ représente l’objet Employe chargé avec toutes ses propriétés issues de la base de données
— La ’View’ représente la page d’accueil

Dans le code ci-dessus :
- Mettez en evidence l’injection du service EmployeManager dans le controleur
- Mettez en evidence le mécanisme de binding entre les champs de formulaire et un objet Employe. Quel Design Pattern est utilisé ?
- Analysez le code de récupération d’informations en base de données. - Que manque t’il dans ce code ?

ETAPE 3 : gestion UrlMapping

Remarquez ci-dessus la prédominance du SimpleUrlMapping (order=0) : tout url /login.htm sera redirigé par le DispatcherServlet vers notre controlleur.

ETAPE 4 : déclaration du bean Controlleur

- Déclarez le bean controlleur dans objisapp-servlet.xml

REMARQUE : Notez l’injection du service dans le controlleur

REMARQUE : formView représente un nom logique d’une vue à afficher lorsque le controlleur reçoit un GET http, ou en cas d’erreur rencontrée. Ici c’est la vue ’login’ (/WEB-INF/jsp/login.jsp)

Lorsque la soumission du formulaire est autorisée, (en cas de ’succes’), la vue logique successView sera renvoyée à l’utilisateur. Ici la vue ’accueil’ : pour un viewResolver de type ’InternalRessourceView’, cela correspond à la /WEB-INF/jsp/accueil.jsp

Etape 5 : Page d’acceuil

Ici la page d’accueil affiche le Nom et prénom de l’employé.

Etape 6 : Test

Testez : http://localhost:8080/demospringmvc/login.htm

Entrez un login valide. L’écran d’accueil apparaît :

TELECHARGEZ la CORRECTION de cette partie.

Vous avez mis en oeuvre Spring MVC.

Partie 2 : Validation des champs du formulaire

Nous allons valider champs du formulaire via Spring Validator

2 étapes :

ETAPE 1 : Coder la classe de validation

Une classe de validation implémente l’interface Validator , comprenant 2 méthodes : supports() et validate().
— Créez un package com.objis.springmvcdemo.validator
— Dans ce packagez, codez la classe EmployeValidator.
- Utilisez l’assistant de création de classes d’Eclipse, en précisant que la classe implémente l’intercace Validator. Eclipse créera pour vous le squelette de la classe avec méthodes de l’interface codées, et à compléter

REMARQUE : le message ’required.login’ est récupéré d’un fichier de propriété (Ex : errors.properties). Si ce message n’est pas trouvé, alors Spring affiche ’Et le champ login alors ?’

ETAPE 2 : Mise à jour configuration du controlleur

- Ajoutez une nouvelle propriété ’validator’ dans la déclaration du bean Controlleur associé au formulaire.

Testez :

Désormais, si le champ login n’est pas rempli, ou s’il est rempli avec des espaces, alors le formulaire n’est pas soumis , et Spring propose à nouveau de remplir le formulaire. De plus le message d’erreur spécifié dans le validator apparaît.

Si le champ login est rempli, alors la méthode OnSubmit du controlleur sera appélée. La page d’accueil s’affiche à nouveau.

REMARQUE : En utilisant des formulaire HTML pur pour la création de formulaire, un problème se pose. Si une erreur arrive après la soumission du formulaire, Spring vous propose à nouveau de remplir le formulaire, mais il ne dispose plus des informations chargées dans l’objet command. Vous devez ’tout retaper’ . Il s’agit d’un binding dans un seul sens : formulaire vers objet command.

C’est pour gérer ce pb que Spring a créé sa propre bibliothèque de balise <>

Dans ce nouveau formulaire, nous utilisons 3 tags de la bibliothèque de tags formulaire de Spring.

— form:form : déclaration d’un formulaire Spring . Notez l’objet command
— form:input : champ texte
— form:password : champ password

La valeur ajoutée de ce formulaire, comparativement au formulaire HTML, est que le Binding formulaire / objet Command est bidirectionnel. De plus vous mettez en évidence les messages associés à l’erreur.

Conclusion : vous pouvez avoir le contrôle complet de la validation métiers complexes en utilisant le Validator. L’utilisation de fichiers de propriétés permettra d’externaliser les messages.

Partie 3 : Annotations Spring 2.5

Suite à l’utilisation des annotations dans le tutoriel 8, précisez 3 annotations utiles facilitant le développement de controlleurs Spring MVC.

PNG - 9.6 ko
tutoriel-spring-mvc-formulaire-annotation-25-4

- 

PNG - 15.2 ko
tutoriel-spring-mvc-formulaire-annotation-25-3

- 

PNG - 10 ko
tutoriel-spring-mvc-formulaire-annotation-25-6

- 

PNG - 20.1 ko
tutoriel-spring-mvc-formulaire-annotation-25-1

- 

PNG - 7.2 ko
tutoriel-spring-mvc-formulaire-annotation-25-2

- Proposez un code plus adéquat du controleur du formulaire, exploitant l’injection de la vue au lieu d’envoyer ’en dur’ la vue ’merci’.

PNG - 5.3 ko
tutoriel-spring-mvc-formulaire-annotation-25-5

Conclusion

Dans ce tutoriel, nous avons mis en œuvre un formulaire Spring MVC.

Prochaine formation SPRING

Le chemin le plus court pour avoir les réflexes et la méthodologie du bon développeur Spring :

Pour aller plus loin : le réseau Objis

Si vous appréciez notre sens du partage, devenez gratuitement membre ’classic’ du Club Objis :
- Votez pour les prochains tutoriaux à publier
- Préparez vos entretiens techniques
- Valorisez votre profil / expertise
- Identifiez des opportunités d’emploi
- Recevez la newsletter objis.com