Les deux modes de SessionClicks

SessionClicks est un utilitaire qui est utilisé pour sauvegarder  l’état d’un élément en fonction de l’utilisateur qui l’utilise (ex : l’état d’un plié déplié…). La sauvegarde peut se faire de deux manières différentes et c’est un outil simple mais efficace et on n’en parle pas assez ;) :

La persistance en base :

Il peut arriver que l’on souhaite garder une information qui dure tout le temps même après une déconnexion, c’est la méthode la plus utilisée dans les sources du portail.  La classe SessionClicks sauvegarde les informations dans la table portalPreferences cependant il y a une limite de stockage en base définit par 

session.clicks.max.allowed.values=1024

Voici un exemple de fonctionnement:

En java :

SessionClicks.put()/SessionClicks.get()

En Ajax :

A.io.request(
'<%=themeDisplay.getPathMain() %>/portal/session_click',
{
   data: {
         myParam:'myValue'
   }
});

 

La sauvegarde dans la session du portail :

C’est cette nouveauté qui a motivé mon post laugh

En effet depuis la 6.1 Liferay propose de sauvegarder  les données dans la session portail. Nous n’avons pas beaucoup d’exemple d’utilisation sur le net donc en voici un :

En java :

SessionClicks.get(PortalSessionThreadLocal.getHttpSession(),"param")

En Ajax :

A.io.request(
'<%=themeDisplay.getPathMain() %>/portal/session_click',
{
   data: {
         myParam:'myValue',
         useHttpSession: true
   }
});

Le paramètre "useHttpSession"  permet de sauvegarder la valeure dans la session de l'utilisateur.

"PortalSessionThreadLocal.getHttpSession()" permet de récuperer la session du portail

 

Blogs
Article intéressant mais le gâteau au chocolat est encore mieux.
Bien vu!!! Article clair et bien rédigé.
Dans quel contexte as-tu été amené à utiliser Session Click?
SessionClicks permet de sauvegarder les préférences du portail. En d'autres termes il permet de sauvegarder l'état d'un composant qui peut-être appelé de n'importe où dans le portail. Le cas le plus fréquent d'utilisation est dans une taglib qui serait appelée sur plusieurs portlets différents. Cependant attention à ne pas utiliser SessionClicks pour faire de l'IPC, ce n'est pas fait pour emoticon
Article intéressant Achraf emoticon, est ce qu'il y a un moyen de persister nativement les sessions click en base de donnée lors de la déconnexion par exemple?
Merci Omar ;) ça dépend du besoin, si le but est d'avoir un état par défaut on peut faire SessionClicks.get() avec une defaultValue. Sinon si le souhait réinitialiser la valeur à chaque déconnexion j'opterais pour SessionClicks en mode session sans persistance en base puis SessionClicks.get() avec une defaultValue.