Total Pageviews

Sunday, August 21, 2016

Liferay: A note of Liferay IPCs

Now as we have discussed about all 5 kinds of IPCs in Liferay, We should have some preference which one to use first.
Obviously Server Side IPC should be considered first, and then the client side implementations.
As per my understanding, following is the order of IPC mechanisms one should consider while implementing IPC.

1. IPC via Server Side Events (Read here)
2. IPC via Private Session Attributes (Read here)
3. IPC via Public Render Parameters (Read here)
4. Client Side IPC via Events/Ajax (Read here)
5. Client Side IPC via Cookies (Read here)

That’s all for today. Thanks for reading and have a nice day.

Saturday, August 20, 2016

Liferay: IPC via Private Session Attributes

Every portlet WAR has a session associated with it. A portlet session is a java object. This session object can be used for sharing data between portlets and achieving IPC. So this article will explain IPC via portlet session.

To understand Portlet sessions, we have to understand session scope of the session object. There are two scopes – PORTLET_SCOPE and APPLICATION_SCOPE.

The data stored in the PortletSession of a portlet is not shared with any other portlets on the page, or anywhere else in the portal. This default behaviour is known as PORTLET_SCOPE. With the JSR-168(Portlet 1.0) portlet specification, concept of APPLICATION_SCOPE was introduced, and is available in its successor JSR-286(Portlet 2.0) which gives data access to all the portlets of the same WAR.

Let’s see the snippets:
Portlet 1: Setting Attributes:

Portlet 2: Fetching Attributes:

Portlet session attributes can be removed also, using the following:
Please note that both methods are interchangeable.

Liferay further provide feature for sharing portlet session attributes with portlet from other WARs. For achieving the same, we have to set <private-session-attributes> to false in liferay-portlet.xml.

That’s all for today. Thanks for reading and have a nice day. 

Monday, August 15, 2016

Liferay: Client Side IPC via Events/Ajax

Client Side IPC using Ajax is another way of achieving communicating between portlets from client size. This mechanism was introduced in JSR-286 (Portlet 2.0) specification and provides a very lightweight and decoupled mechanism to communicate portlets purely in the browser through a JavaScript events mechanism.

The API of this system is very simple and is based on two methods
Prerequisite for this includes - setting <requires-namespaced-parameters> to false, in liferay-portlet.xml file of the both the portlets, which makes allows to share data via Ajax call and adding both the portlets in the same page after deployment.

Let’s see some snippets:

Portlet 1: JS code for setting params

Portlet 2: JS code for fetching the Params

That’s all for today. Thanks for reading and have a nice day.