Creare una PortletURL con Liferay è molto semplice grazie alle taglib fornite con il portale.
Ma se avessimo la necessità di creare delle URL a runtime, in base al valore di qualche campo di un form? Dovremmo utilizzare altre librerie, con Javascript.
Se fossimo all'interno di una JSP, creare una URL sarebbe abbastanza immediato:
<liferay-portlet:actionURL /><liferay-portlet:renderURL /><liferay-portlet:resourceURL />
L'utilizzo delle taglib però ci consente di creare di fatto delle URL cablate all'interno della pagina; tuttavia a volte può essere necessario dover creare una URL programmaticamente e per fortuna ci vengono incontro le librerie Javascript fornite dal portale. Ecco come fare:
<aui:script use="liferay-portlet-url">
var portletURL = Liferay.PortletURL.createRenderURL();
portletURL.setPortletId('<%=PortletKeys.SOME_PORTLET %>');
portletURL.setPlid(15932);
portletURL.setWindowState('<%=LiferayWindowState.POP_UP.toString() %>');
portletURL.setParameter('param1', param1);
portletURL.setParameter('param2', param2);
portletURL.setParameter('mvcPath', '/html/my_portlet/my_page.jsp');
// Ora è possibile usare la URL
console.log(portletURL.toString());
</aui:script>
Allo stesso modo è possibile creare anche URL di altro tipo a seconda delle necessità:
Liferay.PortletURL.createActionURL()Liferay.PortletURL.createPermissionURL()Liferay.PortletURL.createResourceURL()Liferay.PortletURL.createURL()
Se siete curiosi potete consultare i sorgenti del modulo: liferay-portal-6.2-ce-ga3\tomcat-7.0.42\webapps\ROOT\html\js\liferay\portlet_url.js.