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=
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=
# 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...