Ciao a tutti.
Vorrei condividere al volo questa cosa in cui mi sonoimbattuto poco fa.
Solitamente passiamo parametri a pagine diverse della stessa portlet utilizzando una renderURL e invochiamo una action di una portlet tramite la actionURL.
Ma se volessimo passare parametri da una portlet ad una pagina di un'altra? o se volessimo invocare una action di una portlet da un'altra portlet?
Lo scenario è il seguente.
Da una pagina con una portlet Xvoglio richiamare e visualizzare un'altra portlet Y che sta su un'altra pagina "abc".
per fare questo si usa la taglib liferay-portlet.
Nella jsp di partenza di X:
<liferay-portlet:renderURL plid="<%=destPagePlid %>" portletName="<%=destPortletId%>" var="myVar">
<liferay-portlet:param name="myParam" value="12345" />
</liferay-portlet:renderURL>
<a href="<%=myVar%>">clicca</a>
dove destPagePlid è la chiave primaria della pagina di destinazione, che si riesce a ritrovare con una routine di questo tipo:
long pagePlid =0;
List <Layout> pagine = LayoutLocalServiceUtil.getLayouts(themeDisplay.getScopeGroupId(), false );
for(Layout pagina : pagine){
String pagename =pagina.getName(themeDisplay.getLocale());
if(pagename.equals("abc")){
pagePlid=pagina.getPlid();
break;
}
}
mentredestPortletId è il portletid della portlet di destinazione, nel classico formato nomeportlet_WAR_nomewebapp
in questo modo cliccando sul link "clicca" della pagina della portlet X invoco la URL della pagina "abc", passando anche un parametro alla portlet Y instanziata in quella pagina.
In modo del tutto analogo, si può richiamare una action se invece dell'renderURL usiamo la actionURL.
Spero possa essere utile.
Ciao a tutti
Marcello