Taglibs Applications Struts 1 Les Tags Libraries Struts
© Taglibs Applications Struts 1
© Les Tags Libraries Struts Taglibs Applications Struts 2 • Bean : Accès aux Java. Bean, aux ressources • Html : Gestion des formulaires, champs de saisie, liens • Logic : traitements itératifs, conditionnels • Nested : Utilisation des taglibs dans des contextes imbriqués • Tiles : Structuration des pages, définition de composants réutilisables
© La Taglib Bean Taglibs Taglib Bean Applications Struts 3 • Amélioration des tags JSP <jsp: use. Bean>, <jsp: get. Property> et <jsp: set. Property> • Interaction avec les objets représentant le modèle de l’application • Permettre : – La définition de nouveaux beans à partir de sources diverses, – L’affichage d’un bean (ou d’une de ses propriétés) dans la JSP
© Attributs d’un Taglibs Taglib Bean Applications Struts 4 • Id : identifiant pour nommer un nouveau bean • Name : identifiant utilisé pour retrouver un bean existant • Property : nom de la propriété recherchée du bean • Scope : visibilité associée au bean (page, request, session, application)
© Création d’un Bean (1) Taglibs Taglib Bean <bean: define> • Créer un nouveau bean <bean: define id=”my. Bean" value=”a new string"/> • Référencer un bean existant <bean: define id="baz" name="bop" type="com. company. My. Class"/> • Créer un nouveau bean initialisé à la valeur d’une propriété d’un autre bean <bean: define id="bop" name="user" property="name"/> Applications Struts 5
© Création d’un Bean (2) Taglibs Taglib Bean • Existence d’autres tags de création, faisant la copie de beans existants (ou de propriétés de beans) : <bean: cookie> <bean: header> <bean: include> <bean: struts> <bean: parameter> <bean: page> <bean: resource> • Les beans créés de cette façon le sont avec la visibilité “page”. Applications Struts 6
© Affichage d’un Bean (1) Taglibs Taglib Bean <bean: write> • Le contenu d’un Bean, ou d’une propriété de Bean, est converti en une String et copié dans la réponse • Utilisation possible de propriétés indexées ou imbriquées <bean: write name="my. Object" /> <bean: write name="my. Object" property="my. Property" /> <bean: write name="my. Object" property="my. Indexed. Property[2]" /> Applications Struts <bean: write name="my. Object" property="my. Property. class. name" /> 7
© Affichage d’un Bean (2) Taglibs Taglib Bean • Formater une valeur d’un bean – Attribut format du tag <bean: write> <bean: write name='mybean' property='number' format='#, ##0. 00'/> • Localisation des patterns de formatage (fonction de la langue) – Embarquer les patterns dans les bundles de ressources (number. format=#, ##0. 00) Applications Struts <bean: write name='mybean' property='number' format='#, ##0. 00' formatkey='number. format'/> 8
© Messages Taglib Bean <bean: message> • Affiche un message “internationalisé”. • Message identifié par une clef • Il est possible de spécifier des paramètres optionnels <bean: message key="my. Page. title"/> <bean: message key="message. hello" arg 0="<%= my. Bean. get. Name() %>"/> • Le fichier de ressources permet de faire l’association entre la clef et le message correspondant Applications Struts 9 my. Page. title = Welcome to our site message. hello = Hello {0} !
© La Taglib Html Taglibs Taglib Html • Tags nécessaires à la création d’interfaces utilisateur, notamment les formulaires • Permettent : – De remplir automatiquement les champs à afficher – De retourner les valeurs • Autres tags permettant : Applications Struts 10 – D’afficher des messages d’erreur – De gérer les liens et les sessions
© Formulaires (1) Taglibs Taglib Html Applications Struts 11 <html: form> • Représente un formulaire de saisie, associé à un bean dérivant de Action. Form • Chaque champ du formulaire doit correspondre à une propriété du bean. • Le bean sert à renseigner les champs du formulaire, puis à stocker les saisies de l’utilisateur lorsque le formulaire est soumis à la servlet contrôleur
© Formulaires (2) Taglibs Taglib Html Applications Struts 12 Les tags suivants s’utilisent à l’intérieur du tag <html: form> • button • radio • image • text • cancel • submit • multibox • textarea • checkbox • select • password • reset • file • option • hidden • options
© La Taglib Html - Exemple Taglibs Taglib Html • Un formulaire permettant de se loguer <html: form action="/logon" focus="username"> Username : <html: text property="username"/> <br/> Password : <html: password property="password"/> <html: submit propery="submit" value="Submit"> </html: form> Applications Struts 13
© Erreurs Taglib Html <html: errors> • Affiche les messages d’erreurs en attente (résultat de la méthode validate d’un Action. Form par exemple) • Peuvent être placés n’importe où dans la page. • Pas d’affichage “parasite” si aucun message d’erreur en attente – Permet de réutiliser la page de saisie pour afficher les messages d’erreur Applications Struts 14 • Le texte du message est récupéré via les ressources de l’application (idem <bean: message>)
© Hyperliens Taglib Html • <html: link> Génère un élément HTML <a> (ancre, ou lien vers une URL spécifiée) • <html: img> Génère un élément HTML <img> pour l’image spécifiée par l’URL Applications Struts 15 L’encodage d’URL est automatiquement appliqué, pour garder la session en cas d’absence des cookies.
© Checkboxes (1) Taglibs Taglib Html • Une checkbox ne renvoie la valeur spécifiée dans l'attribut value que si elle est cochée • Si la checkbox n'est pas cochée, – Il faut explicitement donner une valeur <html: checkbox property="someprop" value="true">Yes</html: checkbox> Applications Struts 16
© Checkboxes (2) Taglibs Taglib Html Applications Struts 17 • Dans l’action String someprop. Value = null; if((someprop. Value = request. get. Parameter("someprop"))!=null) { // ckecked Sytem. out. println("The box is checked and its value is " + someprop. Value); } else { // not ckecked Sytem. out. println("The box is not checked"); // set the value someprop = "false"; }
© La Taglib Logic Taglibs Taglib Logic • Regroupe les tags permettant d’ajouter des traitements logiques dans les JSP – Reprend l’essentiel des tags disponibles dans la JSTL (JSP Standard Tag Library) • http: //java. sun. com/products/jsp/jstl/ – Conditions sur la génération de texte – Boucles sur les collections d’objets – Gestion du flot de l’application • forward, redirect Applications Struts 18
© Comparaisons de valeurs Taglib Logic <logic: equal> <logic: greater. Equal> <logic: greater. Than> <logic: not. Equal> <logic: less. Than> • Affiche le contenu du tag si le résultat de la comparaison est vrai • L’attribut value est comparé à l’un des attributs de comparaison: cookie, header, parameter, et property et/ou name Applications Struts 19 <logic: equal value="" parameter="username"> Error: a username must be specified </logic: equal>
© Gestion de collections Taglib Logic <logic: iterate> • Permet d’iterer sur une Collection: évalue le contenu du tag pour chaque élément contenu dans la Collection <logic: iterate name=’user’ property=’children’ id=’child’> <bean: write name=’child’ property=’name’/> </logic: iterate> Applications Struts 20
© Autres Taglibs Taglib Logic • <logic: match>, <logic: not. Match> Évalue le contenu du tag si la valeur est une sous-chaine de la variable spécifiée Ex 13 -15 Applications Struts 21 • <logic: present>, <logic: not. Present> Évalue le contenu du tag si la valeur est présente • <logic: forward>, <logic: redirect> Redirige vers la page indiquée
© La Taglib Nested Taglibs Taglib Nested Applications Struts 22 • Extension des tags de base, qui permettent l’utilisation de beans imbriqués. • Permet aux tags d’avoir connaissance de leur environnement • Cette relation est basée sur les associations entre les beans eux-mêmes.
© La Taglib Tiles Applications Struts 23 • Contient des tags utilisés pour créer des composants dynamiques réutilisables • Permet la construction de pages Web en assemblant des “morceaux” de pages réutilisables, appelés Tiles • Ex. : header, footer, menu, body • Chaque Tile est une page JSP et peux être elle-même assemblée à partir d’autres Tiles.
© Tags Tiles Taglib Tiles Applications Struts 24 • <tiles: insert> Insère une Tile avec la possibilité de passer des paramètres (appelés attributs). • <tiles: definition> Permet d’associer un nom logique à l’ensemble “URL d’une Tile / valeurs d’attributs”. Les définitions peuvent être faites dans une page JSP, ou dans un ou plusieurs fichiers de déclarations. • <tiles: put> Définit un attribut à passer à une Tile. Ne peut être utilisé qu’associé aux tags 'insert' et 'definition‘.
© Tiles : exemple Taglibs <%@ taglib uri="/tags/tiles" prefix="tiles" %> <TABLE border="0" width="100%" cellspacing="5"> <TR> <TD colspan="2"><tiles: insert attribute="header"/></TD> </TR> <TR> <TD width="140" valign="top"> <tiles: insert attribute="menu"/> </TD> <TD valign="top" align="left"> <tiles: insert attribute="body"/></TD> </TR> <TR> <TD colspan="2"> <tiles: insert attribute="footer" /> </TD> </TR> </TABLE> Applications Struts 25 <%@ taglib uri="/tags/tiles" prefix="tiles" %> <tiles: insert page="/layouts/my. Layout. jsp" flush="true"> <tiles: put name="title" value="Hello World" /> <tiles: put name="header" value="/tiles/header. jsp" /> <tiles: put name="footer" value="/tiles/footer. jsp" /> <tiles: put name="menu" value="/tiles/menu. jsp" /> <tiles: put name="body" value="/tiles/hello. Body. jsp" /> </tiles: insert>
© La Taglib struts-layout Taglibs Struts-layout • Bibliothèque permettant de développer des écrans à destination des applications web de gestion – Pas fourni en standard avec Struts – Améliorations des contrôles de saisies au sein d'un formulaire – Grille d'affichage de données (avec support de pagination) – Tags de génération d'onglets Web – Utilisation d'arborescences Web Applications Struts 26 • http: //struts. application-servers. com
- Slides: 26