Improve Foudations Improve Technologies Improve Community Improve Institute

Configuration de Struts-Layout

Introduction aux Skins

Struts-Layout (http://struts.application-servers.com) est un framework disposant de nombreuses options de configuration. Ces options agissent d’une part sur le comportement du framework, et d’autres par sur le rendu visuel des pages. Il est ainsi possible de spécifier dans la configuration :

  • le nom de la feuille de style CSS
  • le nom des styles CSS par défaut pour les formulaires, panels et champs de saisie.
  • si les CSS ne sufissent pas pour obtenir le rendu HTML souhaité, le nom de classes Java générant du code HTML spécifique pour ces composants.

C’est pourquoi une configuration Struts-Layout est appelée une “skin”.

Skin par défaut

La configuration par défaut est défini dans le fichier Struts-Layout.properties. Ce fichier est packagé dans le JAR de Struts-Layout, et il n’y a normalement aucune raison de le modifier.

Pour modifier la configuration par défaut, il existe 2 solutions :

  • Ajouter un fichier nommé Struts-Layout_default.properties dans le classpath (par exemple dans WEB-INF/classes)
  • Créer un fichier properties avec un nom quelconque dans le classpath, par exemple MaConfig.properties. Dans ce cas, il faut déclarer le plugin Struts-Layout dans struts-config.xml afin de référencer le fichier properties. Exemple :
<struts-config>
  ...
  <plug-in className="fr.improve.struts.taglib.layout.workflow.LayoutPlugin">
    <set-property property="skinResources" value="MaConfig"/>
  </plug-in>
</struts-config>

Utilisation de skins multiples

Nommage des fichiers

Struts-Layout permet de définir plusieurs configurations. Il est alors possible d’associer une configuration (ou “skin”) à un groupe d’utilisateur donné de façon applicative.

Les règles de nommage des fichiers de configuration sont les mêmes que pour définir la configuration par défaut, avec la règle que le nom du fichier properties doit se finir par “_le nom de la skin”. Voici des examples :

  • Struts-Layout_admin.properties (défini une skin nommée “admin”)
  • Struts-Layout_user.properties (défini une skin nommée “user”)

Si le plugin Struts-Layout est utilisé avec le paramètre “skinResources” à “MaConfig”, les exemples deviennent :

  • MaConfig_admin.properties
  • MaConfig_user.properties

Changement de skin au runtime

Pour fixer la configuration à utiliser au runtime, il faut appeler la méthode suivante: fr.improve.struts.taglib.layout.util.LayoutUtils.setSkin(httpSession, “nom de la skin”);

Avec les examples précédents, les valeurs possibles pour “nom de la skin” sont “admin” et “user”.

Options de configurations

Rendu graphique

Répertoires

Les paramètres suivants permettent de spécifier les répertoires contenant les ressources Struts-Layout :

Nom du paramètre Valeur par défaut Description
directory.config config nom du répertoire contenant les fichiers Javascript et la CSS.
directory.images config nom du répertoire contenant les images.
directory.css directory.config nom du répertoire contenant la CSS.

CSS

Struts-Layout peut générer des valeurs par défaut pour les attributs “class” des balises HTML.
Par défaut, cette option n’est pas activée. Pour l’activer, il faut utiliser les paramètres suivants :

Nom du paramètre Description
skin Nom du fichier CSS (sans .css) à utiliser. Par défaut, le fichier se nomme comme la skin. Par exemple, pour un fichier de configuration nommé Struts-Layout_admin.properties, le fichier CSS doit se nommer admin.css
styleclass.collection classe CSS par défaut pour les listes
styleclass.panel classe CSS par défaut pour les panels et les formulaires
styleclass.label classe CSS par défaut pour les libellés et les champs de saisie
styleclass.grid classe CSS par défaut pour les grilles de positionnement
styleclass.pager classe CSS par défaut pour les pagineurs
styleclass.layer classe CSS par défaut pour les éléments popups

Renderers

Si les CSS ne suffisent pas à atteindre le rendu désiré, il est possible de faire générer le code HTML par des renderers HTML spécifiques.
Pour cela, les paramètres suivants sont disponibles :

Nom du paramètre Valeur par défaut Description
panel.class fr.improve.struts.taglib.layout.util.BasicPanel Renderer pour les panels et les formulaires
collection.class fr.improve.struts.taglib.layout.util.BasicCollection Renderer pour les listes
collection.class.datagrid fr.improve.struts.taglib.layout.util.BasicDatagrid Renderer pour les grilles de données
tabs.class fr.improve.struts.taglib.layout.util.BasicTabs Renderer pour les onglets
field.class fr.improve.struts.taglib.layout.util.BasicField Renderer pour les champs de saisies
treeview.class fr.improve.struts.taglib.layout.util.BasicTreeview Renderer pour les arbres

Comportements

Les options suivantes influent sur les données affichées

Nom du paramètre Valeur par défaut Description
display.null.fields true En mode INSPECT, n’affiche pas les champs qui ont une valeur nulle ou vide
formutils.class fr.improve.struts.taglib.layout.util.BasicFormUtils Classe utilitaire pour déterminer automatiquement les modes d’affichage, s’ils ont été spécifié dans l’action Struts par exemple
formatter.class fr.improve.struts.taglib.layout.formatter.DateFormatter Classe utilitaire pour formatter les objets de type date, nombre, montant etc.
policy.class null Classe utilitaire permettant de modifier la visibilité ou l’édition d’un champ en fonction du profil de l’utilisateur
nested.compatiblity false Rend certains tags compatible Struts-Nested

Calendrier

Nom du paramètre Valeur par défaut Description
layout.calendar calendar.gif Nom de l’image symbolisant le calendrier

Tri

Nom du paramètre Valeur par défaut Description
layout.sort sort.gif Nom de l’image de tri (par défaut)
layout.sort.forward sort.gif Nom de l’image de tri (colonne triée dans un sens)
layout.sort.reverse sort.gif Nom de l’image de tri (colonne triée en sens inverse)
layout.sort.label sort Texte alternatif à l’image de tri
sort.token.required true Nécessite un token transactionnel Struts valide pour trier (bloque les boutons back/forward/reload)
sort.error.keep true Conserve les messages d’erreur après un tri/changement de page
sort.rules.class null Classe à utiliser pour comparer les chaînes de caractères. Permet des tris sans tenir compte des majuscules et des accents
sortutil.action sort.do Nom de l’action Struts-Layout effectuant les tris

Nom du paramètre Valeur par défaut Description
layout.pager.previous.label &lt;&lt; Libellé du lien vers la page précédente
layout.pager.previous.img null Nom de l’image vers la page précédente
layout.pager.next.label &gt;&gt; Libellé du lien vers la page suivante
layout.pager.next.img null Nom de l’image vers la page suivante
layout.pager.maxPageItems 10 Nombre maximum d’éléments par page par défaut
layout.pager.maxLinks 10 Nombre maximum de lien vers des pages à afficher (si le nombre de page est supérieure, un affichage dans le style ← 1 2 ... 5 6 7 ... 10 → est utilisé)
layout.pager.displayDirect false Affiche un champ de saisi pour saisir directement le numéro de la page

Arbre

Nom du paramètre Valeur par défaut Description
tree.numberOfMenusLoaded 50 Nombre maximum de noeud d’un arbre à charger à l’affichage de la page
treeview.action treeview.do Nom de l’action AJAX d’ouverture des noeuds

Liens

Nom du paramètre Valeur par défaut Description
link.token.include false Génère un token transactionel sur chaque lien
follow.change true Si la page contient des données modifiées dans un formulaire et que l’utilisateur clique sur un lien, affiche un popup avertissant l’utilisateur qu’il va perdre les données qu’il a saisi. Par défaut, n’affichage pas le popup (valeur true)

Messages d'erreurs

Nom du paramètre Valeur par défaut Description
error.display true Affiche les messages d’erreurs associés aux champs de saisie à côté des champs
error.format false Utilise les propriétés Struts errors.header, errors.footer, errors.prefix, errors.suffix pour formatter les messages d’erreurs
error.focus false Place le focus sur le premier champ en erreur s’il y en a un

 
nui/articles/skinconfiguration.txt · Last modified: 2006/04/03 15:12 by jribette