Tuesday, 24 February 2015

How to make Liferay's Action Request Parameters available in Render / doView

There are four different ways to pass/copy parameters from Liferay's Action Phase to Render Phase.

1) Pass all parameters
    -   Use PortalUtil class to copy all the parameters in processAction method
    -   PortalUtil.copyRequestParameters(actionRequest, actionResponse);    
        (This can be used if all the parameters passed are required in render method)

2) Pass selective parameters
    -   Manually set variables inside renderparameter inside processAction method
    -   actionResponse.setRenderParameter("action", "Y");    
        (Value set here can be used in rendermethod using renderRequest.getParameter("action"))
 
3) Pass all parameters across all processAction method
    -   Specify below value inside portlet.xml file
                 <init-param>
<name>copy-request-parameters</name>
<value>true</value> 
</init-param>  
   (Need to redeploy your portlet to brig above change into effect.)
 
4) Pass all parameters via manually reading
    -   Some people create Enumeration to iterate over all the elements and put in RenderParameter one by one
    -   Ex:
    Enumeration<String> paramNames = actionRequest.getParameterNames();
    while(paramNames.hasMoreElements()){        
        actionResponse.setRenderParameter(paramNames.nextElement(), actionRequest.getParameter(paramNames.nextElement()));
    }  
   
Cheers!
Henal Saraiya
(Senior Consultant)
CIGNEX Datamatics

No comments:

Post a Comment