Saturday, April 18, 2015

Dynamic Preference Using Portlet Edit Mode.



Assume we want to display day of weeks in  portlet and want to change everyday, we can achieve this requirement using dynamic preference using
Edit mode.

Step 1: Create one portlet plugin project with name TestingPortletPreference, inside this project create one portlet with name
DynamicPreferences.

Step 2: Enable portlet edit mode in portlet.xml as shown below
 


<?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>dynamic-preferences</portlet-name>

        <display-name>Dynamic Preferences</display-name>

        <portlet-class>com.test.DynamicPreferences</portlet-class>

        <init-param>

            <name>view-template</name>

            <value>/html/dynamicpreferences/view.jsp</value>

        </init-param>

        

        <init-param>

                <name>edit-template</name>

                <value>/html/dynamicpreferences/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>

        <portlet-info>

            <title>Dynamic Preferences</title>

            <short-title>Dynamic Preferences</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>

    </portlet>

</portlet-app>



Step 3: create one jsp page name edit.jsp inside /docroot/html/dynamicpreferences  and paste below code in edit.jsp

 
<%@page import="javax.portlet.PortletMode"%>

<%@page import="javax.portlet.PortletURL"%>

<%@page import="com.liferay.portal.kernel.util.StringPool"%>

<%@page import="com.liferay.portlet.PortletPreferencesFactoryUtil"%>

<%@page import="com.liferay.portal.kernel.util.Validator"%>

<%@page import="com.liferay.portal.kernel.util.ParamUtil"%>

<%@page import="javax.portlet.PortletPreferences"%>

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<portlet:defineObjects />



<%

PortletURL  savePreferensesRenderURL = renderResponse.createRenderURL();

savePreferensesRenderURL.setPortletMode(PortletMode.EDIT);



 portletPreferences = renderRequest.getPreferences();



String weekDay = portletPreferences.getValue("weekDay",null);



%>

<p style="border:1px solid green;"> Add/Edit Portlet Preferenses</p>



<form action="<%=savePreferensesRenderURL%>" name="savePreferenses"  method="POST">

   <input  type="text" name="<portlet:namespace/>weekDay" value="<%=weekDay %>" /><br/>

   <input type="submit" value="Set/Reset Preferenses"/>

</form>



Step 4: paste below code in portlet view.jsp


 
<%@page import="java.util.Date"%>

<%@page import="java.text.SimpleDateFormat"%>

<%@page import="com.liferay.portlet.PortletPreferencesFactoryUtil"%>

<%@page import="com.liferay.portal.kernel.util.Validator"%>

<%@page import="com.liferay.portal.kernel.util.ParamUtil"%>

<%@page import="javax.portlet.PortletPreferences"%>

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>



<portlet:defineObjects />



<%

PortletPreferences preferences = renderRequest.getPreferences();



String weekDay = preferences.getValue("weekDay",null);



%>

Today is : <%=weekDay%>




Step 5: Paste below code in portlet controller java class DynamicPreferences.java

 
package com.test;



import java.io.IOException;



import javax.portlet.PortletException;

import javax.portlet.PortletPreferences;

import javax.portlet.RenderRequest;

import javax.portlet.RenderResponse;



import com.liferay.portal.kernel.util.ParamUtil;

import com.liferay.util.bridges.mvc.MVCPortlet;



/**

 * Portlet implementation class DynamicPreferences

 */

public class DynamicPreferences extends MVCPortlet {





    @Override

    public void doEdit(RenderRequest renderRequest,

               RenderResponse renderResponse) throws IOException, PortletException {

          

        String weekDay = ParamUtil.getString(renderRequest, "weekDay");

        

          System.out.println("====" + weekDay);

          

          PortletPreferences preferences = renderRequest.getPreferences();

          

          preferences.setValue("weekDay", weekDay);

          preferences.store();

          super.doEdit(renderRequest, renderResponse);

         

    }

}

0 comments:

Post a Comment