In un precedente articolo (Creare PortletURL via Javascript) ho spiegato come creare una PortletURL utilizzando la libreria Javascript di Liferay.
Quanto spiegato a suo tempo funziona perfettamente tranne nel caso in cui Liferay sia installato fuori dal contesto ROOT di Tomcat; vediamo quindi come fare.
Il problema è legato al fatto che la libreria Javascript genera la URL come se Liferay fosse installato all'interno del contesto ROOT di Tomcat e quindi l'indirizzo finale generato è sbagliato.
Purtroppo l'unica soluzione è costruirsi a mano il percorso base di ogni URL, da usare poi per costruire la URL completa:
<aui:script use="liferay-portlet-url"> var basePortletURL = Liferay.ThemeDisplay.getPathMain() + '/portal/layout?p_l_id=' + Liferay.ThemeDisplay.getPlid(); var url = new Liferay.PortletURL(Liferay.PortletURL.RENDER_PHASE, null, basePortletURL); </aui:script>
Il costruttore ha la seguente firma:
var PortletURL = function(lifecycle, params, basePortletURL) { ... }
dove:
lifecycle
, rappresenta il tipo di URL da creare e può valere:Liferay.PortletURL.ACTION_PHASE
Liferay.PortletURL.RENDER_PHASE
Liferay.PortletURL.RESOURCE_PHASE
params
, rappresenta i parametri della URLbasePortletURL
, rappresenta la URL di base
Entrando un pò del dettaglio, aggiungo che la chiamata che abbiamo visto nel precedente articolo:
var portletURL = Liferay.PortletURL.createRenderURL();
non rappresenta altro che la seguente chiamata:
var portletURL = new Liferay.PortletURL(Liferay.PortletURL.RENDER_PHASE);
Pertanto è poi possibile utilizzare quanto già visto in precedenza.