I cookie ci aiutano a fornire i nostri servizi.

Utilizzando tali servizi, accetti l'utilizzo dei cookie da parte nostra. Per saperne di piu'

Approvo

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 URL
  • basePortletURL, 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.