« Back

Les deux modes de SessionClicks

Technical Blogs August 1, 2014 By Achraf BEN AISSI

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

 

Threaded Replies Author Date
Une pratique utile pour s'adapter en... Sébastien Bihan August 1, 2014 6:31 AM
Article intéressant mais le gâteau au chocolat... Saïd Salhi August 1, 2014 7:18 AM
Bien vu!!! Article clair et bien rédigé. Dans... Yamina AZIZ August 1, 2014 12:53 PM
SessionClicks permet de sauvegarder les... Achraf BEN AISSI August 1, 2014 1:29 PM
Article intéressant Achraf :), est ce qu'il y a... Omar HADDOUCHI August 4, 2014 2:12 AM
Merci Omar ;) ça dépend du besoin, si le but... Achraf BEN AISSI August 4, 2014 2:41 AM

Une pratique utile pour s'adapter en transparence au besoin de l'utilisateur connecté
Posted on 8/1/14 6:31 AM.
Article intéressant mais le gâteau au chocolat est encore mieux.
Posted on 8/1/14 7:18 AM.
Bien vu!!! Article clair et bien rédigé.
Dans quel contexte as-tu été amené à utiliser Session Click?
Posted on 8/1/14 12:53 PM.
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
Posted on 8/1/14 1:29 PM in reply to Yamina AZIZ.
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?
Posted on 8/4/14 2:12 AM.
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.
Posted on 8/4/14 2:41 AM in reply to Omar HADDOUCHI.