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