Transcript Taglib Bean

©
Taglibs
Taglibs
Applications Struts
1
©
Les Tags Libraries Struts
Taglibs
Applications Struts
2
• 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
©
La Taglib Bean
Taglibs
Taglib Bean
Applications Struts
3
• 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
©
Attributs d’un Tag
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=”myBean" value=”a new string"/>
• Référencer un bean existant
<bean:define id="baz" name="bop" type="com.company.MyClass"/>
• 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
<bean:write>
Taglib Bean
• 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]" />
Applications Struts
<bean:write name="myObject" property="myProperty.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
Taglibs
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="myPage.title"/>
<bean:message key="message.hello" arg0="<%= myBean.getName() %>"/>
• Le fichier de ressources permet de faire
l’association entre la clef et le message
correspondant
Applications Struts
9
myPage.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
<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.
Applications Struts
11
• 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
Taglibs
Taglib Html
<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
Applications Struts
14
• Le texte du message est récupéré via les
ressources de l’application (idem
<bean:message>)
©
Hyperliens
Taglibs
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
L’encodage d’URL est automatiquement
appliqué, pour garder la session en cas
Applications Struts
15
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 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";
}
©
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
Taglibs
Taglib Logic
<logic:equal>
<logic:greaterEqual>
<logic:greaterThan>
<logic:notEqual>
<logic:lessEqual>
<logic:lessThan>
• 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
Taglibs
<logic:iterate>
Taglib Logic
• 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>
Applications Struts
20
©
Autres Tags
Taglibs
Taglib Logic
• <logic:match>,<logic:notMatch>
É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:notPresent>
É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 euxmêmes.
©
La Taglib Tiles
Taglibs
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
Taglibs
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/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>
©
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