IPC public render parameters example in Liferay 6.2

IPC public render parameters:
There are 3 ways to share the data between 2 portlets.
1.Portlet session
2.IPC Mechanisms
   a. Public Render Parameters
   b. Event
   c. Client-Side IPC
3.Cookies
public render parameter is introduced in JSR 286 (Portlet Specification 2.0).

-->  To implement public render parameter, we need to declare the parameter as public in portlet.xml file of both portlets.

-->  In this example I am taking "bookName" is the public render parameter.

---> 1. In portlet.xml of portlet X , before 
tag add below lines

<supported-public-render-parameter>bookName</supported-public-render-parameter>

---> 2. In portlet.xml of portlet X , after 
tag add below lines

<public-render-parameter>
       <identifier>  bookName </identifier>
       <qname xmlns:x="http://abc.com">x:bookName
</public-render-parameter>

---> 3. Do the same things for the portlet.xml of portlet Y.
portlet.xml after  
adding above code:

xml version="1.0"?>

<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0">
      
       <portlet>
              <portlet-name>ipc-render-x</portlet-name>
              <display-name>Ipc Render X</display-name>
              <portlet-class>com.test.IpcRenderX</portlet-class>
              <init-param>
                     <name>view-template</name>
                     <value>/html/ipcrenderx/view.jsp</value>
              </init-param>
              <init-param>
                     <name>edit-template</name>
                     <value>/html/ipcrenderx/edit.jsp</value>
              </init-param>
              <expiration-cache>0</expiration-cache>
              <supports>
                     <mime-type>text/html</mime-type>
                     <portlet-mode>view</portlet-mode>
                     <portlet-mode>edit</portlet-mode>
              </supports>
              <resource-bundle>content/Language</resource-bundle>
              <portlet-info>
                     <title>Ipc Render X</title>
                     <short-title>Ipc Render X</short-title>
                     <keywords></keywords>
              </portlet-info>
              <security-role-ref>
                     <role-name>administrator</role-name>
              </security-role-ref>
              <security-role-ref>
                     <role-name>guest</role-name>
              </security-role-ref>
              <security-role-ref>
                     <role-name>power-user</role-name>
              </security-role-ref>
              <security-role-ref>
                     <role-name>user</role-name>
              </security-role-ref>
<supported-public-render-parameter>bookName</supported-public-render-parameter>
       </portlet>
       <public-render-parameter>
       <identifier>
       bookName
       </identifier>
       <qname xmlns:x="http://abc.com">x:bookName</qname>
       </public-render-parameter>
</portlet-app>

View.jsp of Portletx:

<%@taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %>
<%@ taglib uri="http://alloy.liferay.com/tld/aui" prefix="aui" %>
<portlet:defineObjects />
<liferay-portlet:actionURL var ="actionURL" name="saveRenderParameter"/>

<aui:form name="fm" action="<%=actionURL.toString()%>">

       <aui:input name="bookName" lable="Enter Book Name" />

       <aui:button type="submit" value="Click" />
      
</aui:form>

Controller class of PortletX:

package com.test;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;

import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;

/**
 * Portlet implementation class IpcRenderX
 */
public class IpcRenderX extends MVCPortlet {

       public void saveRenderParameter(ActionRequest actionRequest, ActionResponse actionResponse){
             
              System.out.println("From the saveRenderParameter() method");
             
              String bookName= ParamUtil.getString(actionRequest, "bookName");
             
              System.out.println("book name is "+bookName);
             
              actionResponse.setRenderParameter("bookName", bookName);
             
       }
      
      
}


View.jsp of portletY to get the public render parameter:

<%@page import="com.liferay.portal.kernel.util.ParamUtil"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://alloy.liferay.com/tld/aui" prefix="aui" %>
<%
                String bookName = ParamUtil.getString(request, "bookName");
%>

<H3>Public parameter name is bookName</H3>
<H3>Its value is </H3>
<%=bookName %>




Search This Blog

All the rights are reserved to this blog is belongs to me only.. Powered by Blogger.