Influence des thèmes sur les balises Struts.

 
 
Si vous avez suivi la série des articles Struts 2 – les formulaires , vous avez pu remarquer que nous ne nous sommes pas occupé de l'apparence visuelle de notre formulaire.
Nous nous sommes contenté de l'apparence que Struts a généré.
Dans le code des pages .jsp, lorsqu'on utilise les balises struts ( <s:xxx ), l'apparence future de cette balise est défini par l'attribut "theme".
Struts dispose de 3 thèmes de bases: simple, xhtml et css_xhtml.
A défaut d'avoir renseigné la balise theme, Struts utilise le thème "xhtml".
 
Exemple avec ce code :
<s:form action="Register" method="post" theme="xhtml">
<s:textfield label="Votre email" name="user.email" size="30"/>
<s:submit value="Inscription" align="center"/>
</s:form>
 
 
Struts génère le code html suivant :
<form id="Register" name="Register" action="/struts2-test01/pages/Register.action;jsessionid=xxxxxxxxxx" method="post">
<table class="wwFormTable">
<tr>
<td class="tdLabel">
<label for="Register_user_email" class="label">Votre email:</label>
</td>
<td>
<input type="text" name="user.email" size="30" value="" id="Register_user_email"/>
</td>
</tr>
<tr>
<td colspan="2">
<div align="center"><input type="submit" id="Register_0" value="Inscription"/></div>
</td>
</tr>
</table>
</form>
 
 
L'intéret des thèmes est donc la simplification du code tout en permettant une personnalisation de la mise en forme.
 
Pour que le style css du thème soit pris en compte, il faut ajouter dans la page .jsp, entre les balises head:
<s:head theme="xhtml" />

 
 
 
Précision:
 
On peut changer le thème par défaut:
  • Dans WebContent/classes/ , créer un fichier vide struts.properties
En s'inspirant du contenu de struts-default.properties inclu dans la librairie struts2-core-2.2.1.1.jar (utilisée pour notre projet) , on peut changer les entrées suivantes:
 
struts.properties:
### Standard UI theme
### Change this to reflect which path should be used for JSP control tag templates by default
struts.ui.theme=xhtml
struts.ui.templateDir=template
#sets the default template type. Either ftl, vm, or jsp
struts.ui.templateSuffix=ftl
 
 
On peut aussi définir l'utilisation d'un thème par défaut pour une page donnée, en ajoutant dans cette page .jsp, le code suivant:
<s:set name="theme" value="'simple'" scope="page" />

 
 
On trouve les thèmes Struts dans la librairies struts2-core-xx.jar , dans le dossier template/.
 
Information:
Struts utilise le moteur FreeMarker pour générer le code html des thèmes: http://freemarker.sourceforge.net/
 
 
Dans l'article suivant Struts 2 Les thèmes personnalisés , nous allons créer notre propre thème a fin que le formulaire est une apparence unique ! 😉
 

By Clem