TILES
<  Home  |  Présentation  |  Installation  |  TagLib  |  Exemples |  Webographie et liensContacts  >

PLAN

Premier exemple  : Utilisation des templates et de Tiles


La première étape de la conception de l'interface web est le design de chaque "Tiles" séparément. Ces Tiles sont les différentes parties de la page web qui sera affichée sur le navigateur du client. Nous avons décidés dans la partie précédente que le "design" sera constitué de 4 "Tiles" :
  1. HEADER : qui sera l'entète de la page
  2. MENU : le menu
  3. BODY : le corps dynamique de la page
  4. FOOTER : le pied de page (contiendra le copyright,...)
Nous allons maintenant donner le code de chacune de ces parties. Le codes est très très simple et c'est fait exprès. Il est juste là pour donner un exemple du principe de base d'agencement des "Tiles".


Les composants : Tiles

<table cellspacing="0" cellpadding="5" border="0" width="100%">
<tr>
  <td>
      <font color="#000088">
    <H1><B><i>Premier pas avec Tiles </i></b><br/></H1></font>
    <hr>
  </td>
</tr>
</table>
Fichier : header.jsp


<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<table cellspacing="2" cellpadding="2" border="0" width="15%">
<tr>
    <td  bgcolor="#336699">Documentation</td>
</tr>
<tr>
    <td align="right"><a href="<%=request.getContextPath()%>/index.jsp" >Menu 1</a></td>
</tr>
<tr>
    <td align="right"><a href="<%=request.getContextPath()%>/index.jsp" >Menu 2</a></td>
</tr>
<tr>
    <td align="right"><a href="<%=request.getContextPath()%>/index.jsp" >Menu 3</a></td>
</tr>
</table>
Fichier : menu.jsp

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<table cellspacing="2" cellpadding="2" border="0" width="100%" align="center">
<tr>
    <td align="center" >
      <font color="#023264" size="+2">
        <em>                  Ceci est un exemple de BODY!               </em>
        <br>
       
        <em>                                                  </em>
        Cet exemple ne contient que des parties statiques.
      </font>
    </td>
</tr>
</table>
<br><br><br><br><br><br>
Fichier : body.jsp

<hr>
<div align="center">
  <font color="#023264" size="-1">
    <em>         Copyright &copy; 2002, Apache Software Foundation and Cedric Dumoulin       </em>
    <br>
    <em>                   Exemple présenté dans le cadre d'un exposé                        </em>
    <br>
    <em>                       supervisé par M. Dominique Revuz                              </em>
  </font>
</div>
<img src="<%=request.getContextPath()%>/images/struts-power.gif" align="right" border="0">
Fichier : footer.jsp

Nous remarquerons que dans ces tiles nous utilisons l'instruction jsp : request.getContextPath(). Cette instruction permet de récupérer le contexte de la page (son url) ce qui nous permet d'avoir une arborescence transparente au niveau des URL des images ou des liens.

Le template d'affichage

Jusqu'à présent nous n'avons rien vu d'extrênement compliqué et qui recquiert une quelconque connaissance dans le langage Tiles. Maintenant nous allons voir la méthode qui va permettre d'agencer les différents composants. Cette méthode est la création d'un template voici celui qui sera utilisé pour notre exemple. Les parties en gras seront ensuite redétaillées.

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<HTML>
  <HEAD>
    <%-- <link rel=stylesheet href="<%=request.getContextPath()%>/layouts/stylesheet.css" type="text/css"> --%>
        <title>titre</title>
  </HEAD>

<body bgcolor="#ffffff" text="#000000" link="#023264" alink="#023264" vlink="#023264">
<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>
</body>
</html>
Fichier : template.jsp
  • <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %> :
    • C'est une balise obligatoire pour inclure la bibliothèque de balise Tiles dans le contexte associé à la page web. Cette définition est obligatoire et va nous permettre d'utiliser les appels Tiles.
  • <tiles:insert attribute="header" />
    • insère le contenu de l'attribut header à l'endroit ou cette commande est effectuée. Lorsque la page sera appelé, un certain nombre de paramètres devront lui être donnés (comme nous le verrons plus tard). L'insertion va allez chercher le contenu qu'il soit une page, un autre template, ou simple une chaine de caractère et l'affichera directement dans le code du template.


L'affichage de la page :

Jusqu'à présent nous avons dessiné les différents composants, nous les avons agencés, il ne nous reste plus qu'à demander l'affichage de la page. Ceci va être fait grâce à la page index.jsp. En effet dans le fichier de configuration nous avons expressement demandé à ce que cette page soit la première à être afficher lorsque le client se connectera sur notre site web. Voici donc le code de la page index.jsp :

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<tiles:insert page="/tiles-layout/Layout.jsp" flush="true">
  <tiles:put name="title"  value="Tiles exemple 1" />
  <tiles:put name="header" value="/tiles-component/header.jsp" />
  <tiles:put name="footer" value="/tiles-component/footer.jsp" />
  <tiles:put name="menu"   value="/tiles-component/Menu.jsp" />
  <tiles:put name="body"   value="/tiles-component/body.jsp" />
</tiles:insert>
Fichier : index.jsp

On peut remarquer qu'à la première ligne on effectue la même configuration que pour le fichier template.jsp à savoir l'inclusion de la blibliothèque de balise Tiles afin de pouvoir ajouter des commandes Tiles. Ensuite nous allons inclure le template dans la page index.jsp ce qui va pour effet d'afficher le template avec tous ces composants. Les composants sont par ailleurs donnés en argument grâce à la balise "put" qui fait correspondre un champ (hrader, footer, ...) a une page jsp.



Nous avons donc vu un exemple simple d'utilisation de Tiles. La suite parlera de la conception de la même page que pour cet exemple mais a l'aide de concept un peu plus avancés.