© 1 taglibs applications struts taglibs. © 2 applications struts les tags libraries struts bean :...
TRANSCRIPT
©
1
Taglibs
Applications Struts
Taglibs
©
2
Taglibs
Applications Struts
Les Tags Libraries Struts
• Bean : Accès aux JavaBean, 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
©
3
Taglibs
Applications Struts
La Taglib Bean
• Amélioration des tags JSP <jsp:useBean>, <jsp:getProperty> et <jsp:setProperty>
• 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
Taglib Bean
©
4
Taglibs
Applications Struts
Attributs d’un Tag
• 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)
Taglib Bean
©
5
Taglibs
Applications Struts
Création d’un Bean (1)<bean:define>
• Créer un nouveau bean
• Référencer un bean existant
• Créer un nouveau bean initialisé à la valeur d’une propriété d’un autre bean
<bean:define id=”myBean" value=”a new string"/>
<bean:define id="baz" name="bop" type="com.company.MyClass"/>
<bean:define id="bop" name="user" property="name"/>
Taglib Bean
©
6
Taglibs
Applications Struts
Création d’un Bean (2)
• 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”.
Taglib Bean
©
7
Taglibs
Applications Struts
Affichage d’un Bean (1)<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="myObject" />
<bean:write name="myObject" property="myProperty" />
<bean:write name="myObject" property="myIndexedProperty[2]" />
<bean:write name="myObject" property="myProperty.class.name" />
Taglib Bean
©
8
Taglibs
Applications Struts
Affichage d’un Bean (2)
• Formater une valeur d’un bean– Attribut format du tag <bean:write>
• Localisation des patterns de formatage (fonction de la langue)– Embarquer les patterns dans les bundles
de ressources (number.format=#,##0.00)
<bean:write name='mybean'
property='number' format='#,##0.00'/>
<bean:write name='mybean' property='number'
format='#,##0.00' formatkey='number.format'/>
Taglib Bean
©
9
Taglibs
Applications Struts
Messages<bean:message>
• Affiche un message “internationalisé”.
• Message identifié par une clef• Il est possible de spécifier des paramètres optionnels
• Le fichier de ressources permet de faire l’association entre la clef et le message correspondant
<bean:message key="myPage.title"/><bean:message key="message.hello" arg0="<%= myBean.getName() %>"/>
myPage.title = Welcome to our sitemessage.hello = Hello {0} !
Taglib Bean
©
10
Taglibs
Applications Struts
La 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 :– D’afficher des messages d’erreur– De gérer les liens et les sessions
Taglib Html
©
11
Taglibs
Applications Struts
Formulaires (1)<html:form>
• Représente un formulaire de saisie, associé à un bean dérivant de ActionForm
• 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
Taglib Html
©
12
Taglibs
Applications Struts
Formulaires (2)
• button
• cancel
• checkbox
• file
• hidden
• radio
• submit
• select
• option
• options
• image
• multibox
• password
• text
• textarea
• reset
Les tags suivants s’utilisent à l’intérieur du tag <html:form>
Taglib Html
©
13
Taglibs
Applications Struts
La Taglib Html - Exemple
• 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>
Taglib Html
©
14
Taglibs
Applications Struts
Erreurs<html:errors>
• Affiche les messages d’erreurs en attente (résultat de la méthode validate d’un ActionForm 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
• Le texte du message est récupéré via les ressources de l’application (idem <bean:message>)
Taglib Html
©
15
Taglibs
Applications Struts
Hyperliens
• <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
L’encodage d’URL est automatiquement appliqué, pour garder la session en cas d’absence des cookies.
Taglib Html
©
16
Taglibs
Applications Struts
Checkboxes (1)
• 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>
Taglib Html
©
17
Taglibs
Applications Struts
Checkboxes (2)
• Dans l’actionString somepropValue = null;if((somepropValue = request.getParameter("someprop"))!=null){ // ckecked Sytem.out.println("The box is checked and its value is " + somepropValue);}else { // not ckecked Sytem.out.println("The box is not checked"); // set the value someprop = "false";}
Taglib Html
©
18
Taglibs
Applications Struts
La 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
Taglib Logic
©
19
Taglibs
Applications Struts
Comparaisons de valeurs
• 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
<logic:equal><logic:greaterEqual><logic:greaterThan>
<logic:notEqual><logic:lessEqual><logic:lessThan>
<logic:equal value="" parameter="username"> Error: a username must be specified</logic:equal>
Taglib Logic
©
20
Taglibs
Applications Struts
Gestion de collections<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’/><br>
</logic:iterate>
Taglib Logic
©
21
Taglibs
Applications Struts
Autres Tags
• <logic:match>,<logic:notMatch> Évalue le contenu du tag si la valeur est une
sous-chaine de la variable spécifiée
• <logic:present>, <logic:notPresent>
Évalue le contenu du tag si la valeur est présente
• <logic:forward>,<logic:redirect> Redirige vers la page indiquée
Ex 13-15
Taglib Logic
©
22
Taglibs
Applications Struts
• 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 NestedTaglib Nested
©
23
Taglibs
Applications Struts
• 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.
La Taglib TilesTaglib Tiles
©
24
Taglibs
Applications Struts
Tags Tiles• <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‘.
Taglib Tiles
©
25
Taglibs
Applications Struts
Tiles : exemple<%@ 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>
<%@ taglib uri="/tags/tiles" prefix="tiles" %><tiles:insert page="/layouts/myLayout.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/helloBody.jsp" /></tiles:insert>
©
26
Taglibs
Applications Struts
La Taglib 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
• http://struts.application-servers.com
Struts-layout