Tutoriel Struts 2 N°4 : comprendre ActionSupport

/////Tutoriel Struts 2 N°4 : comprendre ActionSupport

logo-struts-2.pngComprenez l’interface Action de Struts 2. Créez des classes actions implémentant l’interface ‘Action’. Mieux : créez des classes actions héritant de la classe ‘ActionSupport’ de Struts 2. Comprenez les services rendus par ActionSupport : validation ‘basique’ et internationnalisation ‘basique’. Découvrez l’effet d’une collaboration implicite entre des intercepteurs Struts 2 (‘params’ , ‘workflow’) et les interfaces implémentées par toute classe action héritant d’ActionSupport (‘Validateable’, ‘ValidationAware’, ‘TextProvider’, ‘LocaleProvider’)

Objis, spécialiste de la formation Java, est heureux de vous offrir ce
tutoriel, extrait de séances pratiques de la formation Struts 2 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

 Documentation Struts 2

 API Struts 2

Prérequis, outils et versions

 JDK 6

 Struts 2.3.1.2

Objectifs

 Comprendre la valeur ajoutée de la classe ‘ActionSupport’ pour vos actions

Programme

 Questions Struts 2

 Partie 1 : projet eclipse ‘Hellostruts2-validationbasique’

 Partie 2 : service de validation ‘basique’

 Partie 3 : service d’internationalisation ‘basique’

Durée

2h.

Rappel : Architecture Struts 2

architecture_struts2.png

 Expliquez.

Questions Struts 2

QUESTION 1 : citez les 3 taches ‘obligatoires’ d’une actions Struts 2

QUESTION 2 : qu’est ce qu’un package struts 2 ? Quel lien avec une action Struts 2 ? Quelle bonne pratique ? Citez les 4 attributs de la déclaration d’un package.

QUESTION 3 : Qu’est ce qu’un namespace dans Struts 2 ? Quel lien avec un package ? Quelle bonne pratique ?

QUESTION 4 : qu’est ce que le package ‘struts-default’ ? quel avantage à hériter de ‘struts-default’ pour la création de votre package ?

QUESTION 5 : comment struts 2 interprète l’URL suivante : http://localhost:8080/objisHelloWorld/prochaine/formation/Inscription.action

QUESTION 6 : quelle valeur ajoutée pour une action d’implémenter l’interface Action de Struts 2 (WebWork) . Expliquer les constantes de cette interface.

QUESTION 7 : citez les interfaces implémentées par la classe ActionSupport

classe-actionSupport

Partie 1 : projet eclipse ‘Hellostruts2-validationbasique’

Reprendre le projet ‘version XML’ de HelloStruts2

HelloStruts2-V1-2

 Dézippez pui éditer le fichier .project

projet-eclipse

 renommez le

projet-eclipse-renome

Et importez le ‘nouveau’ projet dans Eclipse

projet-eclipse-import

 

projet-eclipse-validation-basique

 Déployez

projet-eclipse-validation-basique-deploiement

 Vous êtes prêt .

Partie 2 : service de validation ‘basique’

Nous allons montrer l’effet de la collaboration implicite entre l’intercepteur ‘DefaultWorkflowInterceptor’ et 2 des interfaces implémentées par toute classe action héritant d’ActionSupport : interface ‘Validateable’ et interface ‘ValidationAware’.

Une occasion de découvrir comment il est possible de ‘sortir’ de votre code d’Action Struts 2 une tache technique récurrente.

Intercepteur ‘workflow’

Expliquez la configuration suivante, titée du fichier struts-default.xml (à la racine de la librairie struts2-core-xx.jar).

intercepteur-workflow

— Remarque : l’intercepteur ‘params’ intervient avant l’intercepteur ‘workflow’

— Info : le role de ‘params’ est de transférer les données de la requête vers votre action

— Info : l’intercepteur ‘workflow’ va nous aider à valider les données de la requête avant de les mettre dans notre Model.

— Info : ‘workflow’ doit déclencher en cas d’erreur avant que ‘params’ n’ait eu le temps de mettre les données dans le Model

Notez ainsi que pour chaque requête Struts 2, dès lors que l’action gérant cette requête est incluse dans un package héritant de ‘struts-default’, l’intercepteur ‘workflow’ implémentée par la classe DefaultWorkflowInterceptor, entre en scène.

package-extends-struts-2-default

L’intercepteur ‘workflow’ recherche dans votre action la méthode ‘validate()’ de l’interface Validateable.

Modifiez la classe action de la forme initiale

classe-Hello-1

à la forme suivante

classe-Hello-1-extends-actionSupport

 Redéfinissez la méthode validate() –> click droit –> Source –> Override/implements method et sélectionnez validate()

redefinition-methodes-1

 

redefinition-methodes-2

 

redefinition-methodes-3

 Ajoutez le code suivant :

redefinition-methodes-4

 QUESTION : d’où vient la méthode ?

INFO : cette méthode vient de l’interface com.opensymphony.xwork2.ValidationAware .

interface-validationAware-2

 Montrez que cette interface est implémentée par ActionSupport

interface-validationAware

 Déployez à nouveau l’application

validation-1

 validez formulaire sans remplir.

Vous obtenez ceci :

validation-1-resultat

Pourquoi ?

 Analysez la déclaration de l’Action.

validation-1-cause-manque-input

 Ajoutez la configuration suivante, précisant la page à laquelle Struts 2 vas revenir en cas d’échec de validation

validation-2-config

 Déployez à nouveau

validation-1

 validez sans remplir le champ

validation-2-resultat

BRAVO : vous avez mis en oeuvre un service fournit un service basique de validation, et sans ajouter de ligne de code dans votre méthode de traitement ‘métier’ execute().

Correction

HelloStruts2-validationbasique

Partie 3 : service d’internationalisation ‘basique’

Le code de validation précedant peut être amélioré :

redefinition-methodes-4

En effet, le message d’ereur est codé ‘en dur’. Mauvaise pratique.

A VOUS DE JOUER :

Montrez l’effet de la collaboration implicite entre l’intercepteur ‘DefaultWorkflowInterceptor’ et 2 des interfaces implémentées par toute classe action héritant d’ActionSupport : interface ‘LocaleProvider’ et interface ‘TextProvider’.

Une nouvelle occasion de découvrir comment il est possible de ‘sortir’ de votre code d’Action Struts 2 une tache technique récurrente.

Conclusion

Dans ce tutoriel vous avez mis en oeuvre des services impliquant une collaboration entre des intercepteurs Struts 2 et votre actiuon héritant de ActionSupport.

2018-01-29T17:14:42+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java