f-angi
9/14/2016 - 3:25 PM

Invoking an action from a different portlet

Invoking an action from a different portlet

Una portlet A può invocare un handler di un'altra portlet (p.es. la portlet carrello nel war arag-multioption-portlet).
In una jsp di A:
    <liferay-portlet:resourceURL id="add-to-cart" var="addToCartUrl" portletName="carrello_WAR_aragmultioptionportlet" />

In un controller di carrello:
    @ResourceMapping(value = "add-to-cart")
    @ResponseBody
    public void addToCart(ResourceRequest request, ResourceResponse response)
        throws IOException, PortletModeException, WindowStateException {

        String js = "{\"a\": 1}";
        response.getWriter().write(js);
    }

In liferay-portlet.xml di carrello nella sezione <portlet>:
    <add-default-resource>true</add-default-resource>

In portlet.xml:
		<init-param>
			<name>check-auth-token</name>
			<value>false</value>
		</init-param>		

In portal-ext.properties (portal-developer.properties in fase di sviluppo):
    portlet.add.default.resource.check.enabled=false
Questo disabilita il controllo dell'authentication token a livello di portale. 

Per agire a livello delle singole portlet utilizzare l'opzione 'portlet.add.default.resource.check.whitelist=<lista id portlet>'
N.B.: gli id delle portlet possono essere recuperati in 'Control Panel' -> 'Plugins Configuration'