Struts

download Struts

of 65

Transcript of Struts

Java pour le dveloppement dapplications Web : Java EEStrutsMickal BARON - 2006 (Rev. Aot 2009) mailto:[email protected] ou mailto:[email protected]

Licence

Creative CommonsContrat Paternit Partage des Conditions Initiales l'Identique2.0 France

keulkeul.blogspot.com

http://creativecommons.org/licenses/by-sa/2.0/frStruts - M. Baron - Page 2

Droulement du cours Struts Pdagogie du coursIllustration avec de nombreux exemples Des bulles daide tout au long du cours Ceci est une alerte

Ceci est une astuce

Pr-requiskeulkeul.blogspot.com

Connaissance de Java Connaissance des fondements du WEB (HTML, HTTP) Connaissance des technologies fondatrices de Java EE (Servlet, JSP, balises personnalises)Struts - M. Baron - Page 3

Struts : quest-ce-que cest ... La bibliothque Struts est un framework qui permet de construire des applications Web respectant le modle darchitecture MVC Cest une bibliothque qui fournit le minimum de rgles pour construire une application Web professionnelle (sparation des mtiers et donc des comptences) Struts est un projet soutenu par lApache Software Foundation. Site de rfrence struts.apache.orgkeulkeul.blogspot.com

Logique de fonctionnementla structure de lapplication Web est dcrite dans struts-config.xml lutilisation de Servlets est transparente via des classes adaptes les pages JSP exploitent des balises personnalises de Struts. Il est conseill dutiliser en parallle la bibliothque JSTLStruts - M. Baron - Page

4

Struts : utile ou pas ? Struts est un framework assez lourd pour une simple application (un formulaire et une rponse par exemple) Il introduit un niveau de complexit et de mise en route importants et les bnfices de son utilisation se font ressentir ds lors que lapplication prends de limportance Sur le Web de nombreuses formations quant son utilisation,keulkeul.blogspot.com

montrent son importance dans les projets industriels Une bibliothque est en passe de supplanter Struts : Java Server Faces (JSF) mais trop rcente et pas assez mre pour en discuter dans ce cours ( vrifier )Struts - M. Baron - Page 5

Struts : documentation ... De nombreuses ressources sont disponibles concernant StrutsLa FAQ de Developpez.com : java.developpez.com/faq/struts Struts par lexemple : taha.developpez.com Jakarta Struts - prcis & consis (OReilly), ...

Les nombreuses ressources prsentent principalement la version 1.1 de la bibliothque de Struts (incompatibilit avec la 1.2) Tlchargement de Struts struts.apache.org/download.cgikeulkeul.blogspot.com

Prsentation base sur un exempleun formulaire qui demande la saisie dun nom et dun age contraintes dintgrit : prsence des paramtres, age est un entier positif diffrentes vues : erreurs, formulaire, validationStruts - M. Baron - Page 6

Struts : principe gnrique de la mthodeLe client envoie une requte au contrleurClient WEB

struts-config.xml struts-config.xmlConfiguration 2

Le contrleur traite la requte du client ActionForm ActionFormFichiers Java

Non tudi dans ce cours

EJB EJBFichiers Java

1

ActionServlet ActionServletFichiers Java

Le client reoit la prsentation issue de la vue 6

4 Contrleur

La vue est choisie et paramtre selon ltat du contrleur

Accs Donnes Accs Donnes Action ActionFichiers Java 3 Fichiers Java Modle

keulkeul.blogspot.com

page.jsp page.jsp JSTL JSTL Struts StrutsBiblio. Perso. Fichiers JSP

Gnration de la Sauvegarde les informations des 5 page JSP en HTMLformulaires

properties.fr properties.fr properties.en properties.enRessources

SGBD (mySQL, Oracle, )

Vue

Struts - M. Baron - Page 7

Struts : principe gnrique de la mthode : Contrleur Le contrleur est le cur de lapplication Web. Toutes les demandes du client transitent par lui Il est dfini par une Servlet gnrique de type ActionServlet fournie par lAPI de Struts Le contrleur prend les informations dont il a besoin dans le fichier struts-config.xml Si la requte du client contient des paramtres, ceux-ci sontkeulkeul.blogspot.com

transmis dans un objet de type ActionForm Selon ltat retourn par lActionForm prcdent, le contrleur traite une action spcifique par un objet de type

Action

Struts - M. Baron - Page 8

Struts : intgration dans lapplication web De manire intgrer le framework Struts dans une application Web, il est ncessaire denrichir le fichier web.xml Par principe le contrleur Struts est atteint par toutes les URLs se terminant par le suffixe .do ... Servlet gnrique ActionServlet action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml En paramtre de la Servlet le fichier struts-config.xml action *.do Possibilit de dfinir ...

Le contrleur est dfini par la

keulkeul.blogspot.com

Toute URL terminant par .do est traite par le contrleur

plusieurs ActionServlet pour une mme application Web

Struts - M. Baron - Page 9

Struts : le fichier configuration struts-config.xml Le fichier grant la logique de lapplication Web sappelle par dfaut struts-config.xml

web.xml

Il est plac dans le rpertoire WEB-INF au mme niveau que Il dcrit essentiellement trois lmentsles objets Bean associs aux formulaires JSP (ActionForm) les actions raliser suite aux rsultats des objets ActionForm (Action) les ressources ventuelles suites des messages

keulkeul.blogspot.com

Le fichier de configuration est un fichier XML dcrit par une DTD. La balise de dpart est ...

Description de fonctionnement de larchitecture de lapplication WebStruts - M. Baron - Page 10

Struts : Action Une action est un traitement obtenu suite au passage de la requte au contrleur Nous distinguons deux sortes de requte clientrequte sans paramtre issue par exemple dune re-direction requte avec paramtres issue par exemple dun formulaire

Les actions sont dcrites dans la balise keulkeul.blogspot.com

au moyen de la balise Selon le type de requte (avec ou sans paramtre) diffrents attributs de la balise sont renseignerStruts - M. Baron - Page 11

Struts : Action Dans le cas dune requte sans paramtre le rle du contrleur est de relayer la demande du client une URL La balise dispose alors des attributs suivantsString path : dfinit le nom de lURL (suffixe .do implicite) String type : dfinit le nom de la classe Action qui doit traiter la demande. Utilisez la classe org.apache.struts.actions.ForwardActiondans ce cas prcis de re-direction

String parameter : le nom de lURL qui doit tre relaye la demande Quand le client transmet lURL .../monnom.do au contrleur celui-ci Il sagit dune re-direction

keulkeul.blogspot.com

Struts - M. Baron - Page 12

Struts : Action pisode 1 : appel du formulaire de saisie du nom et de lage

Le formulaire est dfini dans la page formulaire.jsp

Le client envoie la requte suivantekeulkeul.blogspot.com

Cest la page formulaire.jsp qui est retourne au clientStruts - M. Baron - Page 13

Struts : Action Dans le cas dune requte avec paramtres le rle du contrleur est doubletransmettre les informations dans un objet Bean de type ActionForm raliser une action spcifique (autre quune simple redirection)

La balise dispose, en plus des attributs dj tudis, des attributs suivantsString scope : les valeurs du formulaire sont stockes en session String name : rfrence le nom dune section keulkeul.blogspot.com

(voir ci-aprs)

String validate : indique si la mthode validate de lobjet ActionFormdoit tre appele ou non (voir ci-aprs)

String input : indique la vue qui sera appele sil y a erreur dans lobjet ActionForm Struts - M. Baron - Page 14

Struts : Action Les formulaires sont dclars dans la balise au moyen de la balise La balise possde les attributs suivantsString name : nom du formulaire de la page JSP String type : classe ActionForm qui stocke les paramtres du Bean ... Quand le client transmet lURL

keulkeul.blogspot.com

Dans le cas o les paramtres sont mauvais le contrleur redirige vers /pageerreurs.do

Struts - M. Baron - Page 15

Struts : Action pisode 2 : envoie dune requte de type POST du formulaireTrois actions et un formulaire sont actuellement dfinisLe formulaire est dfini par la valeur formPersonne

...

keulkeul.blogspot.com

monpackage.FormulaireBean /vues/main.jsp

Les valeurs sont stockes dans

Struts - M. Baron - Page 16

Struts : Action pisode 2 (suite) : envoie dune requte issue du formulaire Bibliothque de balises ... personnalises Struts:HTML Personne - Formulaire Laction du formulaire est dappeler la ressource /main associe Nom Age Les deux paramtres transmis en paramtre de la requte ... Nous reviendrons plus tard

keulkeul.blogspot.com

sur la comprhension de la bibliothque struts-html

Struts - M. Baron - Page 17

Struts : ActionForm Lobjectif dun objet de type ActionForm est de stocker les informations issues dun formulaire Les objets de type ActionForm sont construits comme un objet Bean : utilisation du principe de la rflexivit La classe Bean devra donc hriter de la classe ActionForm du package org.apache.struts.action Cest le contrleur via la Servlet qui se charge de crer les instances des objets de type ActionFormkeulkeul.blogspot.com

Pour chaque proprit, le Bean doit dfinir un attribut et deux mthodesun modifieur pour affecter une valeur lattribut un accesseur pour obtenir la valeur de lattribut correspondantLinstanciation dun objet de type ActionForm est implicite. Linformation est donne dans struts-config.xml

Struts - M. Baron - Page 18

Struts : ActionForm Hormis le but de stocker les proprits des formulaires, les objets de type ActionForm soccupent aussi de laspect smantique des donnes La mthode validate soccupe de vrifier la validit des attributs de lobjet Bean

ActionErrors validate(ActionMapping, HttpServletRequest)le paramtre ActionMapping est un objet image de la configuration de laction en cours stocke dans struts-config.xml le paramtre HttpServletRequest est la requte du client transmise par la Servlet de contrlekeulkeul.blogspot.com

le retour ActionErrors permet de retourner des messages erreurs au client

La classe ActionForm dispose galement dautres mthodesActionServlet getServlet() : retourne la Servlet qui gre le contrle reset(ActionMapping, HttpServletRequest) : initialise les propritsStruts - M. Baron - Page 19

Struts : ActionForm Un objet de type ActionMapping permet dextraire les informations contenu dans le fichier struts-config.xml Il possde des mthodes associes... ...

String getType() : pour accder au contenu de lattribut type String getInput() : pour accder au contenu de lattribut inputkeulkeul.blogspot.com

Un objet ActionErrors permet dajouter des erreurs et lajout se fait par la mthodeadd(String, ActionMessage) : o le premier paramtre correspond lacl et le second au message derreurStruts - M. Baron - Page 20

Struts : ActionForm pisode 3 : stocker les informations du formulairepublic class FormulaireBean extends ActionForm { private String nom = null; private String age = null; public String getNom() { return nom; }

Les deux attributs modlisant les proprits public void setNom(String nom){ du Beanthis.nom = nom; } public void setAge(String age) { this.age = age; } public String getAge() { return age; } ... }

La classe du framework Struts qui gre les Beans associs aux formulaires

keulkeul.blogspot.com

Les modifieurs et accesseurs pour traiter et modifier les proprits

Struts - M. Baron - Page 21

Struts : ActionForm pisode 3 (suite) : stocker et valider les info. du formulairepublic class FormulaireBean extends ActionForm { ... // Li la modlisation des proprits public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) { ActionErrors erreurs = new ActionErrors(); if (nom == null || nom.trim().equals("")) { Au dbut erreurs.add("nomvide", new ActionMessage("formulaire.nom.vide")); erreurs est vide } donc pas if (age == null || age.trim().equals("")) { erreurs.add("agevide", new ActionMessage("formulaire.age.vide")); derreur } else { try { int mon_age_int = Integer.parseInt(age); if (mon_age_int < 0) { erreurs.add("ageincorrect", Ajout des erreurs new ActionMessage("formulaire.age.incorrect")); selon larrivage } } catch (Exception e) { erreurs.add("ageincorrect", new ActionMessage("formulaire.age.incorrect",age)); } } return erreurs; }

keulkeul.blogspot.com

Depuis la nouvelle version 1.2, il faut utiliser ActionMessage et non ActionError (dsapprouve)

}

Struts - M. Baron - Page 22

Struts : ActionForm et ActionErrors Les messages derreurs stocks dans un objet ActionErrors et retourns par la mthode validate sont transmis au contrleur Si validate vaut true et que lobjet ActionErrors nest pas null le contrleur redirige vers la vue de lattribut input... ...

Les erreurs sont affiches dans la vue JSP au moyen de la balise personnalise de la bibliothque Struts-HTMLkeulkeul.blogspot.com

La balise naffiche pas les messages mais des identifiants prsents dans un fichier ressource qui doit tre rfrenc dans struts-config.xml

Struts - M. Baron - Page 23

Struts : ActionForm et ActionErrors Pour dclarer un fichier ressource dans le fichier configuration struts-config.xml utiliser la balise String parameter : nom du fichier ressource boolean null : true affiche null, false affiche ???key??? struts-config.xml String key : utiliser quand il y a plusieurs fichiers ressourcesDe prfrence la fin du fichier

Le fichier ressource doit porter comme extension .propertiesExemple de fichier : toto.properties

keulkeul.blogspot.com

Le fichier ressource doit tre placer obligatoirement dans un sous-rpertoire de /WEB-INF/classes. Exemples :/WEB-INF/classes/toto.properties /WEB-INF/classes/Les fichiers ressources sont obligatoires quand vous utilisez la balise dans une page JSP

Pour choisir le fichier ressource, utilisez lattribut bundle dans la balise en indiquant le nom de la clStruts - M. Baron - Page 24

Struts : ActionForm et ActionErrorsFichier ... erreur.properties formulaire.nom.vide=Vous devez indiquer un nom formulaire.age.vide=Vous devez indiquer un age formulaire.age.incorrect=L'age [{0}] est incorrect errors.header=

  • errors.footer=

Personne Les erreurs suivantes se sont produites Retour au formulaire

pisode 4 : grer les erreurs smantiques du formulaire

keulkeul.blogspot.com

Emplacement des fichiers properties

Struts - M. Baron - Page 25

Struts : Action Nous avons pour linstant utilis simplement la classe

ForwardAction qui ne permet que de traiter des re-directionssans de rels traitements mtiers... ...

De manire pouvoir raliser des actions plus complexes (modification du modle, cration de nouveaux Bean, )keulkeul.blogspot.com

nous drivons explicitement la classe Action Cette classe possde la mthode execute appele par le constructeur de lapplication Web si aucune erreur ne sest produiteStruts - M. Baron - Page 26

Struts : Action

ActionForward execute(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse)le paramtre ActionMapping est un objet image de la configuration de laction en cours stocke dans struts-config.xml le paramtre ActionForm correspond au Bean qui stocke linformation du formulaire le paramtre HttpServletRequest est la rfrence de la requte le paramtre HttpServletResponse est la rfrence de la rponse le retour ActionForward est un objet pour identifier la destination prochaine que le contrleur choisira

keulkeul.blogspot.com

Il faut modifier galement struts-config.xml en ajoutant au corps de la balise la balise String name : tiquette pour la re-direction String path : chemin de re-directionStruts - M. Baron - Page 27

Struts : Action pisode 5 : amliorer le traitement des actions du contrleurpublic class FormulaireAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception { FormulaireBean formulaire = (FormulaireBean)form; req.setAttribute("nom", formulaire.getNom()); req.setAttribute("age", formulaire.getAge()); return mapping.findForward("response"); } }

Grce au paramtre ActionForm on a accs au contenu du Bean

Lobjet requte de la Servlet est modifi en ajoutant deux attributs issus du Beankeulkeul.blogspot.com

On indique ici que la prochaine re-direction se fera dans response Ajout dans le corps de cette action de la balise

... ...

Ltiquette response indique une nouvelle page cible

Struts - M. Baron - Page 28

Struts : Action pisode 5 (suite) : rponse positive Personne Personne - Reponse Nom${nom} Age${age}
Retour au formulaire

Utilisation des EL dans la page JSP puisque deux attributs ont t dfinis dans la classe FormulaireAction (scope = request)

keulkeul.blogspot.com

La balise permet de retourner facilement un lien hypertexteStruts - M. Baron - Page 29

Struts : DynaActionForm Les objets ActionForm sont des Beans qui permettent de stocker des proprits statiques et de les valider Un constatles valeurs dun formulaire sont des chanes de caractres : String pour les valeurs uniques et String[] pour les valeurs champs multiples il faut redfinir chaque fois des get et des set pour les proprits

La solution est dutiliser des formulaireskeulkeul.blogspot.com

dont la structure est dclare dans le fichier struts-config.xml qui sont crs dynamiquement par lenvironnement Struts

Ralisationutilisation de la classe DynaActionForm modification de la balise Struts - M. Baron - Page 30

Struts : DynaActionForm La classe DynaActionForm possde la mme mthode validate que ActionForm cependant laccs aux attributs se fait par un objet Map Utiliser les mthodes suivantesparamtreString ma_propriete = (String)this.get("nom");

Ne pas oublier de Caster lobjet en retour

Object get(String) : retourne la valeur de la proprit donne en

void set(String, Object) : modifie la valeur de la proprit donne enparamtrekeulkeul.blogspot.com

Pour chaque champ du formulaire on dfinit une balise dans le corps de la balise

Deux proprits dfinies dans le formulaire nomFormulaire trait par le Bean DynaForm Struts - M. Baron - Page 31

Struts : DynaActionForm pisode 6 : utilisation dun Bean dynamiqueLe Bean dynamique

public class PersonneDynaActionForm extends DynaActionForm { public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) { ActionErrors erreurs = new ActionErrors(); String nom = (String)this.get("nom"); String age = (String)this.get("age"); if (nom == null || nom.trim().equals("")) { erreurs.add("nomvide", new ActionMessage("formulaire.nom.vide")); } if (age == null || age.trim().equals("")) { erreurs.add("agevide", new ActionMessage("formulaire.age.vide")); } else { ... } return erreurs; Le reste du code est identique au code } } fourni par lActionForm prcdente

Chaque proprit est extraite par un identifiant

keulkeul.blogspot.com

...

Dclaration des deux proprits

Le fichier struts-config.xml

Struts - M. Baron - Page 32

Struts : DynaActionForm pisode 6 (suite) : utilisation dun Bean dynamique

public class FormulaireAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception { PersonneDynaActionForm formulaire = (PersonneDynaActionForm)form; req.setAttribute("nom", formulaire.get("nom")); req.setAttribute("age", formulaire.get("age")); return mapping.findForward("response"); } } keulkeul.blogspot.com

Il faut modifier en consquence laction associe

Cette solution offre lavantage de dcrire la structure du Bean par une description XMLStruts - M. Baron - Page 33

Struts : Validator : des constats ... En utilisant la solution DynaActionForm nous sommes encore obligs dcrire le code Java correspondant aux contraintes dintgrit La validation des donnes se fait uniquement ct serveur Deux types de validationvalidation de contrle de surface (prsence ou pas de donnes, donnes numriques contenant ou pas de lettres ?)keulkeul.blogspot.com

validation smantique (numro de carte bleue valide ?)

Technologies couramment employes pour la validationvalidation de contrle de surface par JavaScript ct client validation smantique ct ServeurStruts - M. Baron - Page 34

Struts : Validator : et une solution ConstatsLa vrification ct client est longue, explicitement non performante car longue dbuguer et ncessite lapprentissage du langage JavaScript La vrification de surface na pas lieu dtre ralise sur le serveur La solution par un Bean ActionForm et par la mthode validate est rptitive car aucune aide la vrification

Solution : utiliser le plug-in Validatorkeulkeul.blogspot.com

Permet de dcrire des contraintes dintgrit directement dans un fichier XML Permet de valider les donnes ct client sans crire la moindre ligne de JavaScriptStruts - M. Baron - Page 35

Struts : Validator : Dploiement Le plug-in Validator doit tre ajout dans lapplication WebAjouter au rpertoire bibliothque de votre application commons-validator.jar et jakarta-oro.jar Ajouter le fichier validator-rules.xml dfinissant les contraintes dintgrit standard dans le rpertoire /WEB-INF

Ajouter la balise dans le fichier struts-config.xml qui sert charger la classe externe Validator StrutsString classname : indique le nom de la classe instancier La balise est utiliser pour initialiser la classe String property : le nom de la proprit initialiser String value : la valeur de la proprit

keulkeul.blogspot.com

Pour notre utilisation doit renseigner deux infosle fichier validator-rules.xml (ne pas modifier) le fichier dfinissant les contraintes dintgrit des diffrents formulaires construit par le concepteur Struts - M. Baron - Page 36

Struts : Validator : Dploiement Prciser dans la balise que lActionForm est dfinie par org.apache.struts.validator.DynaValidatorForm Prciser galement les paramtres prsents dans le formulaire comme pour DynaActionForm dans la balise String name : le nom du champ String type : son type JavaDans le fichier struts-config.xml seulement deux modifications Pour dire que les paramtres sont grs dynamiquement et par

Validator

keulkeul.blogspot.com

...

Ce nom de fichier pour la validation explicite des contraintes nest pas fix

Struts - M. Baron - Page 37

Struts : Validator : criture des contraintes dintgrit Les contraintes dintgrit sont dfinies explicitement dans un fichier xml (ici validation.xml) Le fichier dcrit en deux parties des rgles dintgrit qui se trouvent dans la balise : informations porte globale, valable dans tous lesformulaires

: dfinit lensemble des formulaires pour lesquels il y a descontraintes dintgrit ... ...

keulkeul.blogspot.com

Informations globales la description Description de lensemble des formulairesStruts - M. Baron - Page 38

Struts : Validator : criture des contraintes dintgrit Dans la balise on peut dfinir des constantes utilises dans les autres descriptions des formulaires : nom de la constante : contient la valeur de la constanteDescription dune constantekeulkeul.blogspot.com... ... ... ...

Valeur dune constante

Les contraintes dintgrit de chaque paramtre du formulaire sont dfinies par des expressions rgulires (peut-tre dclaresdans la balise globale comme constante)Struts - M. Baron - Page 39

Struts : Validator : Expression Rgulire Rappel : une expression rgulire permet de trouver plusieurs mots ou phrases qui sont proches (hydro => hydrocarbure, hydrofuge, ) On ne vrifie ici pas le contenu des paramtres (effectu dans la classe Action) mais la forme (chiffre avec des lettres, Elles sont bases sur des caractres spcifiques ayant chacun une importance Nous trouvons trois types de caractreskeulkeul.blogspot.com

caractres interdits, ...)

mta-caractres : ^, ., ?, *, + et le $ groupe de caractres : \d, \D, \w, \W, \s, \S, \b, \B et \nnn autres mta-caractres : {m,n}, |, []Les expressions rgulires sont puissantes et sont souvent utilises dans les langages de Scripts (Perl, shell bash, )

Struts - M. Baron - Page 40

Struts : Validator : Expression Rgulire : Mta-caractres Le point . : reprsente nimporte quel caractre123.5 => 123.5, 12345, 123t5, 123 5, ...

Le point dinterrogation ? : le caractre prcdent ? Le caractre \ est utilis comme est optionnel12?45 => 145, 1245chappement. Pour chercher . on utilisera \. , ...

Ltoile * : le caractre prcdent * peut tre rpt 0 ou plusieurs fois12*45 => 145, 122245

keulkeul.blogspot.com

Le plus + : le caractre prcdent + peut tre rpt 1 ou plusieurs fois12+34 => 12234, 12222234

Le dollar $ et le chapeau ^ : caractre en fin et dbut de ligne^toto$ => ligne finissant par toto et commenantStruts -toto par M. Baron - Page41

Struts : Validator : Expression Rgulire : Groupe de caractres \d : tout caractre numrique : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 \D : tout caractre sauf numrique \w : une lettre, une lettre accentue, un chiffre ou _ \W : tout caractre sauf une lettre, accentue, un chiffre ou _ \s : espace, tabulation, saut de ligne, ou tout autre caractre non imprimablekeulkeul.blogspot.com

\S : tout caractre sauf ceux dfinis par \s \b : espace, ponctuation, le dbut du texte du texte, fin du texte \B : le contraire de \bStruts - M. Baron - Page 42

Struts : Validator : Expression Rgulire : autre mta-caractres Accolades {n,m} : les accolades agissent comme ltoile, litration est comprise entre n et m Alternative | : a | b => a or b Occurrence [abc] : 1 lettre au choix parmi trois Occurrence [a-z], [g-j], [a-zA-Z] : lettre comprise entre ... Occurrence [0-9], [6-9] : chiffre compris entre keulkeul.blogspot.com

Occurrence [abc-], [a-z-] : toute lettre comprise entre et - Occurrence [^abc], [^a-d] : toute lettre sauf ...Le caractre ^ associ une occurrence dsigne un complmentStruts - M. Baron - Page 43

Struts : Validator : Expression Rgulire : exemples a\.*z => az, a.z, a..z, a..z, ... a\+\+z => a+z, a+++++z, a+++++++++++z, ... a\.?e => ae, a.e et rien dautre a\Dz => aaZ, a%z, abz mais ne trouvera pas a2z, a5z l\.\d\d\d4 => 1.4544, 1.8884, 1.3254, \D+ : toute chane de caractre non nulle sans caractres a{1,3} => a, aa, aaa et rien d autre a.{2,2}z => abrz, avbz, a23zkeulkeul.blogspot.com

a|b => a, b (a|b)+ => a, b, ab, ba, abab [\[\\\]]abc => [abc, \abc, ]abc java[4-8] => java4, java5, , java8Struts - M. Baron - Page 44

Struts : Validator : criture des contraintes dintgrit Pour chaque formulaire dcrit dans la balise il faut prciser les contraintes dintgrit des paramtres

Le nom du formulaire est indiqu dans lattribut name de

Une balise contient autant de balises que de paramtres du formulaireString property : nom du champ du formulaire pour lequel descontraintes dintgrit sont dfinies

String depends : liste des contraintes dintgrit vrifier... ... ... ... ...

keulkeul.blogspot.com

Description de deux formulaires

Renseignements donns concernant les diffrents paramtres du formulaireStruts - M. Baron - Page 45

Struts : Validator : criture des contraintes dintgrit Lattribut depends peut prendre les valeurs suivantesrequired : champ ne doit pas tre vide mask : le champ doit correspondre une ExpReg dfinie par mask integer : champ doit tre un entier byte, long, float, double, email, date, range, ...

Possibilit de mettre plusieurs valeurs dans lattribut depends Les contraintes sont vrifies dans lordre de lattribut depends. Si une contrainte nest pas vrifie, les suivantes ne le sont paskeulkeul.blogspot.com... ... ...

La proprit prop1 est obligatoire et doit correspondre une ExpReg

Struts - M. Baron - Page 46

Struts : Validator : criture des contraintes dintgrit Lexpression rgulire associe la variable mask est renseigne par la sous balise de la balise La balise possde les sous balises suivantes : nom de la variable modifier : valeur de la variableModification de la variable mask...

keulkeul.blogspot.com

mask ^\s*\d+\s*$ ...

Utilisation dune expression rgulire qui exprime que seuls des chiffres prcds et suivis despace sont autoriss

Struts - M. Baron - Page 47

Struts : Validator : criture des contraintes dintgrit Chaque contrainte est lie un message derreur dfini par une cl et dont le contenu est initialis dans les fichiers propertieserrors.required : message li la contrainte required errors.invalid : message li la contrainte mask errors.email : message lie la contrainte email

Possibilit dajouter des arguments au moyen de i est un variant allant de 0 3 String key : message retournerkeulkeul.blogspot.com

Largument arg0 sera utilis dans le retour des messages

Les messages derreurs sont dj dfinis (en anglais) dans le Fichier validator-rules.xml par dfaut fichier validator-rules.xmlerrors.required={0} is required. errors.invalid={0} is invalid. errors.email={0} is an invalid e-mail adress

Argument utilis dans le messageStruts - M. Baron - Page 48

Struts : Validator : criture des contraintes dintgrit pisode 7 : utilisation dun Bean Validator dynamique... Utilisation de la classe DynaValidatorForm de Struts ...

... Validation des donnes du

formulaire ct serveur active

keulkeul.blogspot.com

... Nom Age ... ...

Le formulaire JSP ne change pas

Struts - M. Baron - Page 49

Struts : Validator : criture des contraintes dintgrit pisode 7 (suite) : utilisation dun Bean Validator dynamique Dfinition dune contrainte dintgrit dans une constante entierpositif ^\s*\d+\s*$ Le paramtre nom est obligatoire Le paramtre age est obligatoire et doit mask respecter lexpression ${entierpositif} rgulire dfinie par entierpositif

keulkeul.blogspot.com

Fichier de validation.xml

Struts - M. Baron - Page 50

Struts : Validator : criture des contraintes dintgrit pisode 7 (suite bis) : utilisation dun Bean Validator # Pour les messages derreurs davant Validator formulaire.nom.vide=Vous devez indiquer un nom formulaire.age.vide=Vous devez indiquer un age formulaire.age.incorrect=L'age [{0}] est incorrect errors.header=

  • errors.footer=

# Pour la validation des donnes avec Validator personne.nom=nom {0} est remplac par age. personne.age=age errors.invalid={0} est invalide. errors.required={0} est obligatoire.

Fichier de properties_fr

Dfini dans arg0 de validator.xml

keulkeul.blogspot.com

Lge est invalide car il contient du texte Le message errors.invalid est utilis dans le fichier propertiesStruts - M. Baron - Page 51

Struts : Validator : criture des contraintes dintgrit Nous avons vu pour linstant que la vrification des donnes se faisait essentiellement ct serveur Struts et le plug-in Validator offre la possibilit de renforcer la vrification en amont ct client en gnrant automatiquement le JavaScript Le JavaScript gnr correspond la description donne dans le fichier de contraintes dintgrit Deux choses doivent tre renseignes dans la JSP du formulairekeulkeul.blogspot.com

Dans la balise il faut initialiser lattribut onsubmit = "return validateFormPersonne(this)" si le nom du form. est FormPersonne Ajouter la balise dont lattribut formName prend la valeur "formPersonne"Deux vrifications de surface des donnes sont ralises. Une ct client et une ct serveurStruts - M. Baron - Page 52

Struts : Validator : criture des contraintes dintgrit pisode 8 : gnration automatique de code JavaScript... Nom Age ... ...

Bote de dialogue gre par du JavaScript

Fichier JSP du formulaire Code source de la page HTML gnr par Tomcatkeulkeul.blogspot.com...