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
.