You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by jf...@apache.org on 2005/04/06 03:15:55 UTC
cvs commit: jakarta-jetspeed/xdocs portlet_config_GenericMVC.xml
jford 2005/04/05 18:15:55
Modified: xdocs portlet_config_GenericMVC.xml
Log:
Added more documentation on the Generic MVC Portlet
Revision Changes Path
1.2 +85 -2 jakarta-jetspeed/xdocs/portlet_config_GenericMVC.xml
Index: portlet_config_GenericMVC.xml
===================================================================
RCS file: /home/cvs/jakarta-jetspeed/xdocs/portlet_config_GenericMVC.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- portlet_config_GenericMVC.xml 3 Apr 2005 22:39:09 -0000 1.1
+++ portlet_config_GenericMVC.xml 6 Apr 2005 01:15:55 -0000 1.2
@@ -102,8 +102,91 @@
<p/>
</section>
-->
- <section name="Explanation of the Generic MVC Portlet's render/action phase">
-
+ <section name="Explanation of the Generic MVC Portlet's action/render phase">
+ <p>
+ It is important to understand the Generic MVC Portlet's render and action phasing to properly understand what is going on.
+ </p>
+
+ <subsection name="History">
+ <p>
+ In the past, portlets were required to use Turbine actions.
+ The action parameter on the url was required in order to execute an action on a portlet.
+ When Turbine processed the incoming URL, it would execute the action that was passed in on the URL.
+ This action occurred first, before any rendering had started.
+ Two side effects of the action firing first were:
+ 1) redirects could be used to forward the portal to another PSML and
+ 2) data could be placed into the session or user temp and other porltets would render updated content.
+ </p>
+ </subsection>
+
+ <subsection name="Generic MVC Portlet anction/render phase">
+ <p>
+ With the Genereic MVC Portlet, actions are fired directly before a portlet's content is rendered.
+ The action is not specified in the URL, but is instead specified in the registry.
+ To fire an action, simply specifying an eventSubmit_domyaction on the url will fire domyaction if that method exists in the action class.
+ However, this also allows multiple portlets domyaction method to fire.
+ To limit this to the actual portlet instance that was used to submit the action, one needs to specify the portlet id on the URL as well.
+
+ </p>
+ <p>
+ <code>
+ $jslink.getPortletById($portlet.ID).addQueryData("eventSubmit_domyaction", "1")
+ </code>
+ </p>
+ <p>
+
+ Since the action is now being fired during the render process, it is now too late for redirects.
+ This can somewhat complicate development of portlets/psmls that depend on each other.
+ Also, now that the action is not fired until directly before rendering, any dependant portlets may not see any data changes until a second browser refresh.
+
+ </p>
+ </subsection>
+
+ <subsection name="Development Guidelines">
+ <p>
+ Here are some guidelines to developing your portlet when using the Generic MVC Portlet.
+
+ <ul>
+ <li>
+ <p><span style="font-weight: bold;">Use multiple templates when necessary</span></p>
+ <p>
+ In your action, calling setTemplate allows you to change the currently displayed template.
+ This can cut down on messy Velocity/JSP code to handle different display states within the same file.
+ </p>
+ </li>
+ <li>
+ <p><span style="font-weight: bold;">Use PortletSessionState and PortletConfigState</span></p>
+ <p>
+ PortletSessionState provides methods for setting/getting/removing data for a specific portlet instance.
+ This allows you to keep session data without worrying about overwriting another portlet's data.
+ </p>
+ <p>
+ PortletConfigState provides access to helpful methods for retrieving and setting parameters for a portlet.
+ </p>
+ </li>
+ <li>
+ <p><span style="font-weight: bold;">Avoid Writing Your Own Portlet</span></p>
+ <p>
+ With the GenericMVCPortlet, there is usually not a need to write your own class.
+ Simply create a registry entry and use GenericMVCPortlet as the parent.
+ All you need to do is provide a template.
+ If you wish to provide dynamic content, provide an action parameter in the registry and write an action instead.
+ </p>
+ </li>
+ <li>
+ <p><span style="font-weight: bold;">Always derive from GenericMVCAction</span></p>
+ <p>
+ Continuing from the previous tip, if developing dynamic content, simply subclass the GenericMVCAction class.
+ There is no need to subclass either the VelocityPorltetAction of the JspPortletAction.
+ Both of these classes derive from GenericMVCAction themselves.
+ By subclassing directly from GenericMVCAction, you can switch between JSP and Velocity without having to worry about touching you action class.
+ </p>
+ </li>
+ </ul>
+ </p>
+ </subsection>
+ <p>
+ </p>
</section>
<section name='Example of Portlets'>
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org