Les attributs sont les variables calculées par le portail et qui peuvent alors être exploitées par les pages JSP. Ces attributs sont placés dans la portée de la requête et peuvent être récupérée soit par du code Java au sein des JSP, soit par des EL (Expressions Languages). La meilleure approche est celle des EL.

Exemple d'affichage d'un attribut via du code Java :

<p>
  <%=request.getAttribute("osivia.attribut").toString() %>
</p>

Exemple d'affichage d'un attribut à l'aide des EL :

<p>
  ${requestScope['osivia.attribut']}
</p>

Exemple d'affichage d'un attribut à l'aide des EL et de la taglib JSTL "core" :

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<p>
  <c:out value="${requestScope['osivia.attribut']}" escapeXml="false" />
</p>
L'attribut escapeXml paramétré à faux permet d'empêcher que le code XML soit protégé. Cette fonction est particulièrement utile pour injecter du code HTML.

Liste des attributs fournis par l'API

L'API du portail OSIVIA propose un certain nombre d'attributs pouvant être utilisés afin de personnaliser les layouts ou les régions de la charte. La liste de ces attributs est accessible au travers de constantes définies dans la classe org.osivia.portal.api.Constants.

Définition de nouveaux attributs

Les attributs sont regroupés dans des paquets ; cette organisation permet au portail de ne charger que les paquets dont la page a besoin, ce qui permet d'économiser une charge inutile (par exemple, calculer le fil d'Ariane alors que la page ne l'affiche pas).

Pour définir de nouveaux attributs, il faut alors créer un nouveau paquet, puis exploiter le mécanisme des customizers.

Développement d'un nouveau paquet d'attributs

Le nouveau paquet d'attributs doit implémenter l'interface org.osivia.portal.api.theming.IAttributesBundle. Cette interface dispose de deux méthodes :

  • void fill(RenderPageCommand renderPageCommand, PageRendition pageRendition, Map\
    <string> attributes) throws ControllerException</string>
    , qui permet le calcul de tous les attributs du paquet ;
  • Set\
    <string> getAttributeNames()</string>
    , qui permet de récupérer la liste exhaustive des noms des attributs du paquet.

Développement du customizer

Le customizer doit avoir comme identifiant la valeur de la constante CUSTOMIZER_ID de l'interface org.osivia.portal.api.theming.IAttributesBundle.

Son action consiste à retourner une valeur calculée du paquet lorsque le nom de l'attribut passé en paramètre appartient à la liste des noms de ce paquet.