bloggers bloggers

Marco Napolitano
Messaggi: 68
Stelle: 0
Data: 15/11/17
Jader Jed Francia
Messaggi: 50
Stelle: 0
Data: 22/09/17
Ezio Lombardi
Messaggi: 9
Stelle: 0
Data: 23/06/17
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
marcello marangio
Messaggi: 4
Stelle: 0
Data: 05/07/13
Marco Mancini
Messaggi: 1
Stelle: 0
Data: 05/06/13
Indietro

Recuperare il plid di una pagina in cui è presente una particolare portlet

Sarà capitato spesso anche a voi di dover chiamare una portlet B a partire da una portlet A e magari, visto che la portlet B possiede determinate configurazioni, nella costruzione della RenderUrl dalla portlet chiamante è necessario passare il plid di riferimento in cui la portlet chiamata è presente.

Di norma, lo ammetto, salvavo nelle property di portale la friendly url della pagina in cui la portlet chiamata esisteva, da quella ricavavo il layout e di conseguenza il plid .. lavoro noioso. Ultimamente però ho scoperto un metodo che può risultare molto utile  e farci risparmiare quel lavoro tedioso : 

 long mioPlid = PortalUtil.getPlidFromPortletId(groupId, "PortletKey");

Il metodo non fà altro che, dato il groupId e la key della portlet chiamata, andare a cercare tutti i layout (in questo caso non privati, ma esiste un metodo che ha lo stesso nome in cui la firma prevede anche un booleano in cui, passando true, la ricerca  viene effettuata sulle pagine private) che hanno quella portlet e restituire il primo plid che viene trovato.Questa è una limitazione forte, ne convengo, ma può rivelarsi molto utile se sappiamo che all'interno del nostro Site ci sarà una ed una sola pagina che avrà quella portlet al suo interno.

A quel punto , basterà creare la render url come segue 

<liferay-portlet:renderURL  var="XXURL" portletName="PortletKey" plid="<%=mioPlid%>">
          <portlet:param name="alfa" value="beta" />
          ......
</liferay-portlet:renderURL>
 
ed il gioco è fatto.
 
Grazie ai the 1975 per questa scoperta :)
Hope this help.
Commenti
Aggiungi Commento
Marco Napolitano
Metodo molto interessante!
Avrei però un paio di domande a riguardo:
- se la portlet è deployata in più pagine, quale viene restituita? C'è un qualche criterio?
- se la portlet fosse instanceable che valore andrebbe usato per iil parametro PortletKey?
Inviato il 02/02/16 23.03.