Paramètres de rendu public

Les paramètres de rendu publics permettent aux portlets JSR 286 de partager des informations d'état de navigation. Ils sont particulièrement utiles pour la coordination de plusieurs portlets de navigation et d'afficheur qui affichent divers éléments d'information liés au même nom de paramètre. Le portail stocke tous les paramètres de rendu des portlets, y compris les paramètres de rendu publics, sous forme de code dans l'URL du portail en cours. Les paramètres de rendu publics sont donc correctement conservés par des actions standard de navigation du navigateur, comme le bouton Précédent et la création de signets.

Notes :
  • Des paramètres de rendu publics sont générés entre portlets JSP pendant la phase de rendu et non pendant la phase d'action. Pour plus d'informations, voir Communication basée sur des événements d'un portlet JSR 286 dans les liens associés.
  • Vous pouvez définir des paramètres de rendu partagés ainsi que des paramètres de rendu privés pendant la génération d'adresse URL à l'aide de l'API d'état. Pour plus d'informations, voir Génération d'adresses URL avancée pour l'échange de données.
  • Les paramètres de rendu publics peuvent aussi être partagés avec des portlets distants via le protocole WSRP V 2.0.
  • Des informations sur les paramètres de rendu sont normalement codées dans l'URL. Par conséquent, leurs noms et valeurs doivent être aussi courts que possible afin de respecter les restrictions de longueur d'URL de votre navigateur.

Concepts de Java Portlet Specification 2.0

Les détails de programmation pour les paramètres de rendu publics sont définis dans Java Portlet Specification 2.0. Ils sont lus comme des paramètres de demande et définis dans des URL de rendu ou la réponse à une action. Le plus souvent, les paramètres de rendu publics se comportent exactement comme des paramètres de rendu "normaux" ou privés. La seule différence est que l'identificateur de paramètre est explicitement déclaré par le programmeur dans le descripteur de déploiement portlet.xml avec un ou plusieurs noms publics à espace de nom. De cette façon, le portail peut décider quels paramètres des deux portlets doivent être mappés vers les mêmes informations.

Voici un exemple de déclaration dans le descripteur de déploiement :
<portlet-app xmlns:x="http://www.cntserv_exmp.com/portlet">
   <portlet>
      ...
      <supported-public-render-parameter>custID</supported-public-render-parameter>
   </portlet>
   <public-render-parameter>
   	  <identifier>custID</identifier>
   	  <qname>x:customerID</qname>
   </public-render-parameter>
</portlet-app>
Ce fragment de code déclare un paramètre de rendu public accessible avec la clé de paramètre custID. Voici un exemple de fragment de code pour lire le paramètre :
String customerID = renderRequest.getParameter("custID");

Le paramètre est partagé avec le nom complet, lequel est composé de l'espace de nom et du nom local et de customerID dans l'espace de nom http://www.cntserv_exmp.com/portlet. Par conséquent, si un autre portlet déclare un paramètre avec le même nom complet, quel que soit l'identificateur local utilisé, ce paramètre peut être mappé vers les mêmes données par le portail.

Les portlets peuvent déclarer des noms affichés globalisés et des descriptions pour les paramètres de rendu publics dans le regroupement de ressources de l'application. Toutefois, HCL Portal version 8.5 ne possède pas d'interface utilisateur demandant ces informations.

Comment contrôler le partage de paramètres dans le portail

Le portail implémente le partage de paramètres en les plaçant dans des portées : deux paramètres de rendu publics ou plus provenant de différents portlets sont mappés vers les mêmes données dans l'URL de portlet, mais uniquement si les deux conditions suivantes sont remplies :
  • Les paramètres déclarent le même nom complet incluant l'espace de nom.
  • Les paramètres sont placés dans la même portée.
La portée par défaut pour tous les paramètres publics est la portée globale. Par conséquent, tous les paramètres publics avec le même nom complet sont partagés par tous les portlets dans toutes les pages.

Pour certains cas d'utilisation, il peut être nécessaire de limiter le partage des paramètres. Ce peut être le cas, par exemple, si vous avez deux paires de navigateurs ou de portets d'afficheur dans deux pages différentes, où chaque paire doit être coordonnée. Cependant, les paires ne doivent pas interférer entre les pages afin que le navigateur de la première page n'ait pas d'influence sur l'afficheur de la deuxième page. Dans ces cas, le portail vous permet de limiter la portée de partage pour les paramètres de rendu publics en fonction des pages. La portée de partage des paramètres pour une page est contrôlée par un paramètre de page param.sharing.scope. Vous pouvez le définir dans la vue Propriétés des pages sous Options avancées > Je souhaite définir des paramètres. Si vous définissez une valeur pour ce paramètre, les portlets dans la page partagent leurs paramètres de rendu publics uniquement avec les autres portlets dans la même page ou dans des pages ayant la même portée.

Pour empêcher le partage avec d'autres pages des paramètres de rendu utilisés sur une page, vous pouvez associer le paramètre param.sharing.scope à la valeur réservée ibm.portal.sharing.scope.page. L'indication de cette valeur produit le même résultat que si vous utilisiez l'ID objet unique de la page, généré en interne par le portail, comme valeur du paramètre param.sharing.scope.

Comment définir la portée des paramètres de rendu publics spécifiques

Le paramètre param.sharing.scope mentionné précédemment définit la portée pour tous les paramètres de rendu publics. En outre, il est également possible de définir la portée de paramètres de rendu publics particuliers. Les pages de modèle HCL Portal utilisent cette approche. Par exemple, le modèle de page de base définit les paramètres suivants :
<parameter 
   name="param.sharing.scope.{http://www.ibm.com/xmlns/prod/datatype/content/resource-collections}" 
   type="string" update="set"><![CDATA[ibm.portal.sharing.scope.page]]></parameter>
<parameter 
   name="param.sharing.scope.{http://www.ibm.com/xmlns/prod/datatype/content}" 
   type="string" update="set"><![CDATA[ibm.portal.sharing.scope.page]]></parameter>
<parameter 
   name="param.sharing.scope.{http://www.ibm.com/xmlns/prod/websphere/portal/v7.0/portal-contextual-portal}" 
   type="string" update="set"><![CDATA[ibm.portal.sharing.scope.page]]></parameter>
<parameter 
   name="param.sharing.scope.{http://www.ibm.com/xmlns/prod/websphere/portal/v8.0/portal-contextual-portal}" 
   type="string" update="set"><![CDATA[ibm.portal.sharing.scope.page]]></parameter>
<parameter 
   name="param.sharing.scope.{http://www.ibm.com/xmlns/prod/websphere/portal/publicparams}path-info" 
   type="string" update="set"><![CDATA[ibm.portal.sharing.scope.page]]></parameter>
Ce fragment à partir d'un modèle définit la portée de la page de tous les paramètres de rendu publics qui sont contenus dans les espaces de nom suivants :
http://www.ibm.com/xmlns/prod/datatype/content/resource-collections
http://www.ibm.com/xmlns/prod/datatype/content
http://www.ibm.com/xmlns/prod/websphere/portal/v7.0/portal-contextualportal
http://www.ibm.com/xmlns/prod/websphere/portal/v8.0/portal-contextualportal
Il définit également la portée du paramètre path-info qui est défini dans l'espace de nom
http://www.ibm.com/xmlns/prod/websphere/portal/publicparams

Limitations

Ci-après les limitations connues pour les paramètres de rendu publics :
  1. La portée de partage s'applique toujours à tous les paramètres de tous les portlets dans une page. Vous ne pouvez actuellement pas contrôler le partage des paramètres de rendu publics sous le niveau de la page.
  2. Les éléments <alias> facultatifs des déclarations de paramètres de rendu publics sont ignorés. Actuellement, le partage de paramètres de rendu publics est uniquement contrôlé par les éléments <name> ou <qname> des déclarations de paramètres