Source Code



package com.indent.portals.test;

import java.io.IOException;
import java.net.URLEncoder;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.PortletMode;
import javax.portlet.PortletPreferences;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ValidatorException;

public class IndentJSPPortlet extends GenericPortlet {
   
   public static String PREF_JSPPAGE="jsppage";
   public static String ATTRIBUTE_JSPPAGE = "indentJspPortlet.jsppage";

   public void processAction(ActionRequest req, ActionResponse res)
   throws IOException, PortletException 
   {
      PortletPreferences prefs=req.getPreferences();
       boolean editOK;
       String errorMsg = null;
       String jsppage = req.getParameter("jsppage");
       prefs.setValue("jsppage",jsppage);
       try {
          prefs.store();
          editOK = true;
       }
       catch (ValidatorException ex) {
          editOK = false;
          errorMsg = ex.getMessage();
       }
       if (editOK) {
           res.setPortletMode(PortletMode.VIEW);
       }
       else {
           res.setRenderParameter("error","Failed to save preferences");
       }
      
   }

   public void doView(RenderRequest req, RenderResponse res)
   throws IOException, PortletException 
   {
      res.setContentType("text/html");
      PortletPreferences prefs = req.getPreferences();
      String jsppage = prefs.getValue(IndentJSPPortlet.PREF_JSPPAGE,null);
      System.out.println("jsppage:" + jsppage);
      if (jsppage == null)
      {
         res.getWriter().print("<p>Go to edit of this portlet and specify a jsp page.</p>");
         return;
      }
      if (jsppage.trim().equals(""))
      {
         res.getWriter().print("<p>Go to edit of this portlet and specify a jsp page.</p>");
         return;
      }
      includeJsp(jsppage,req,res);
   }
   public void includeJsp(String jsppage,RenderRequest req, RenderResponse res)
   throws IOException,PortletException
   {
      PortletRequestDispatcher rd =
         getPortletContext().getRequestDispatcher(jsppage);
      rd.include(req,res);
   }
   public void doEdit(RenderRequest req, RenderResponse res)
   throws IOException, PortletException
   {
      res.setContentType("text/html");
      PortletPreferences prefs = req.getPreferences();
      String jsppage = prefs.getValue(IndentJSPPortlet.PREF_JSPPAGE,null);
      req.setAttribute(this.ATTRIBUTE_JSPPAGE,jsppage);
      includeJsp("/indent/jspportlet-edit.jsp",req,res);
   }
}//eof-class

Porlet Definition


   <portlet>
      <portlet-name>satya-portlet-jspportlet-2</portlet-name>
      <display-name>IndentJSPPortlet2</display-name>
      <portlet-class>com.indent.portals.test.IndentJSPPortlet</portlet-class>
      <expiration-cache>0</expiration-cache>
      <supports>
         <mime-type>text/html</mime-type>
         <portlet-mode>edit</portlet-mode>
      </supports>
      <portlet-info>
         <title>Indent JSP Portlet 2</title>
         <short-title>Indent JSP Portlet 2</short-title>
         <keywords>Indent JSP Portlet 2</keywords>
      </portlet-info>
      <portlet-preferences>
         <preference>
            <name>jsppage</name>
            <value></value>
         </preference>
      </portlet-preferences>
      <security-role-ref>
         <role-name>power-user</role-name>
      </security-role-ref>
      <security-role-ref>
         <role-name>user</role-name>
      </security-role-ref>
   </portlet>

Edit Preferences JSP Page


<%@ include file="/html/portlet/init.jsp" %>
<!--
***********************************************
* jspportlet-edit.jsp
***********************************************
1. edit the property called "jsppage"
-->
<%
String jsppage = (String)renderRequest.getAttribute("indentJspPortlet.jsppage");
%>
<h3>Edit Preferences for JSP Portlet</h3>

<form method="post" action="<portlet:actionURL/>">
<p>Specify JSP page to display output
<input type="text" name="jsppage" value="<%=jsppage%>">
<input type="submit" value="Submit" name="SubmitButton"/>
</form>

A sample jsp page to test


<p>Hello world from JSP Portlet