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 :
C’est pourquoi une configuration Struts-Layout est appelée une “skin”.
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 :
<struts-config>
...
<plug-in className="fr.improve.struts.taglib.layout.workflow.LayoutPlugin">
<set-property property="skinResources" value="MaConfig"/>
</plug-in>
</struts-config>
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 :
Si le plugin Struts-Layout est utilisé avec le paramètre “skinResources” à “MaConfig”, les exemples deviennent :
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”.
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. |
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 |
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 |
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 |
| Nom du paramètre | Valeur par défaut | Description |
|---|---|---|
| layout.calendar | calendar.gif | Nom de l’image symbolisant le calendrier |
| 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 | << | 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 | >> | 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 |
| 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 |
| 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) |
| 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 |