Comprenez 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
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
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
Partie 1 : projet eclipse ‘Hellostruts2-validationbasique’
Reprendre le projet ‘version XML’ de HelloStruts2
Dézippez pui éditer le fichier .project
renommez le
Et importez le ‘nouveau’ projet dans Eclipse
Déployez
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).
— 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.
L’intercepteur ‘workflow’ recherche dans votre action la méthode ‘validate()’ de l’interface Validateable.
Modifiez la classe action de la forme initiale
à la forme suivante
Redéfinissez la méthode validate() –> click droit –> Source –> Override/implements method et sélectionnez validate()
Ajoutez le code suivant :
QUESTION : d’où vient la méthode ?
INFO : cette méthode vient de l’interface com.opensymphony.xwork2.ValidationAware .
Montrez que cette interface est implémentée par ActionSupport
Déployez à nouveau l’application
validez formulaire sans remplir.
Vous obtenez ceci :
Pourquoi ?
Analysez la déclaration de l’Action.
Ajoutez la configuration suivante, précisant la page à laquelle Struts 2 vas revenir en cas d’échec de validation
Déployez à nouveau
validez sans remplir le champ
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é :
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.