PortletPreferences are set by portlets to store customized information. By default, the PortletServingServlet servlet stores the portlet preferences for each portlet window in a cookie.
The attributes of the cookie are defined as follows:
Path
context/portlet-name/portletwindow
context/portlet-name/portletwindow
Name:
The name of the cookie has the fixed value of PortletPreferenceCookie.
Value
The value of the cookie contains a list of preferences by mapping to the following structure:
*['/' pref-name *['=' pref-value]]
The value of the cookie contains a list of preferences by mapping to the following structure:
*['/' pref-name *['=' pref-value]]
All preferences start with '/' followed by the name of the preference. If the preference has one or more values, the values follow the name separated by the '=' character. A null value is represented by the string '#*!0_NULL_0!*#'.
In this example, the cookie value look like,
Name: PortletPreferenceCookie
Path: /myportletpref/MyPortletPref/default
Value: /namepair=wpsadmin=wpsadmin
URL of the portlet is :
https://localhost:10002/myportletpref/MyPortletPref
Sample Code:
MyPortletPrefPortlet.java
package com.ibm.myportletpref;
import java.io.*;
import java.util.*;
import javax.portlet.*;
/**
* A sample portlet based on GenericPortlet
*/
public class MyPortletPrefPortlet extends GenericPortlet {
public static final String JSP_FOLDER = "/_MyPortletPref/jsp/"; // JSP folder name
public static final String VIEW_JSP = "MyPortletPrefPortletView"; // JSP file name to be rendered on the view mode
public void init() throws PortletException{
super.init();
}
public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
// Set the MIME type for the render response
response.setContentType(request.getResponseContentType());
// Invoke the JSP to render
PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(getJspFilePath(request, VIEW_JSP));
rd.include(request,response);
}
public void processAction(ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException {
PortletPreferences prefs=request.getPreferences();
String[] namepair={request.getParameter("myname"),request.getParameter("password")};
prefs.setValues("namepair", namepair);
prefs.store();
}
private static String getJspFilePath(RenderRequest request, String jspFile) {
String markup = request.getProperty("wps.markup");
if( markup == null )
markup = getMarkup(request.getResponseContentType());
return JSP_FOLDER + markup + "/" + jspFile + "." + getJspExtension(markup);
}
private static String getMarkup(String contentType) {
if( "text/vnd.wap.wml".equals(contentType) )
return "wml";
else
return "html";
}
private static String getJspExtension(String markupName) {
return "jsp";
}
}
import java.io.*;
import java.util.*;
import javax.portlet.*;
/**
* A sample portlet based on GenericPortlet
*/
public class MyPortletPrefPortlet extends GenericPortlet {
public static final String JSP_FOLDER = "/_MyPortletPref/jsp/"; // JSP folder name
public static final String VIEW_JSP = "MyPortletPrefPortletView"; // JSP file name to be rendered on the view mode
public void init() throws PortletException{
super.init();
}
public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
// Set the MIME type for the render response
response.setContentType(request.getResponseContentType());
// Invoke the JSP to render
PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(getJspFilePath(request, VIEW_JSP));
rd.include(request,response);
}
public void processAction(ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException {
PortletPreferences prefs=request.getPreferences();
String[] namepair={request.getParameter("myname"),request.getParameter("password")};
prefs.setValues("namepair", namepair);
prefs.store();
}
private static String getJspFilePath(RenderRequest request, String jspFile) {
String markup = request.getProperty("wps.markup");
if( markup == null )
markup = getMarkup(request.getResponseContentType());
return JSP_FOLDER + markup + "/" + jspFile + "." + getJspExtension(markup);
}
private static String getMarkup(String contentType) {
if( "text/vnd.wap.wml".equals(contentType) )
return "wml";
else
return "html";
}
private static String getJspExtension(String markupName) {
return "jsp";
}
}
MyPortletPrefPortletView .jsp
<%@page session="false" contentType="text/html" pageEncoding="ISO-8859-1" import="java.util.*,javax.portlet.*,com.ibm.myportletpref.*" %>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<portlet:defineObjects/>
Enter your Name<BR>
<form action='<portlet:actionURL/>'>
<input type="text" name="myname"/>
<input type="password" name="password"/>
<input type="submit" name="submit" value="submit"/>
</form>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<portlet:defineObjects/>
Enter your Name<BR>
<form action='<portlet:actionURL/>'>
<input type="text" name="myname"/>
<input type="password" name="password"/>
<input type="submit" name="submit" value="submit"/>
</form>
ScreenShot
Click here to download the source code
No comments:
Post a Comment