[jbossseam-issues] [JBoss JIRA] Updated: (JBSEAM-1720) s:link doesnt work correctly in a portlet

Chris Rudd (JIRA) jira-events at lists.jboss.org
Sat Jul 28 01:34:47 EDT 2007


     [ http://jira.jboss.com/jira/browse/JBSEAM-1720?page=all ]

Chris Rudd updated JBSEAM-1720:
-------------------------------

    Description: 
When using a s:link inside a portlet application the actionMethod/etc are not properly processed.

Ive traced this down, the current SeamPhaseListener processes pageActions and the s:link/s:button as part of the beforeRender processing. The actionMethod/actionOutcome/etc parameters are only passed to the portlet during the processAction portlet request. The beforeRender is executed during the doView portlet request, which doesnt have access to those parameters.

One possible solution is to pass those parameters as renderparameters via the SeamPhaseListener.setPortletRenderParameter so that they are accessible to the doView render process.

I think the better solution is to have all that processing occur during the processAction phase instead of the doView phase.

The following change seems to work :

SeamPhaseListener.afterPortletPhase line 258
+      // Use the getRenderResponse flag to indicate that we have hit the end of the last phase that will
+      // be processed before the render. Handle the beforeRender at this time, as the next phase to 
+      // occur should be RENDER_RESPONSE
+      if( event.getPhaseId() != RENDER_RESPONSE && (facesContext.getRenderResponse() || event.getPhaseId() == INVOKE_APPLICATION )
+     	 beforeRender(event);
+
         FacesMessages.afterPhase();

After this change (and JBSEAM-1719) s:link/s:button works under jboss-portal 2.6

  was:
When using a s:link inside a portlet application the actionMethod/etc are not properly processed.

Ive traced this down, the current SeamPhaseListener processes pageActions and the s:link/s:button as part of the beforeRender processing. The actionMethod/actionOutcome/etc parameters are only passed to the portlet during the processAction portlet request. The beforeRender is executed during the doView portlet request, which doesnt have access to those parameters.

One possible solution is to pass those parameters as renderparameters via the SeamPhaseListener.setPortletRenderParameter so that they are accessible to the doView render process.

I think the better solution is to have all that processing occur during the processAction phase instead of the doView phase.

The following change seems to work :

SeamPhaseListener.afterPortletPhase line 258
+      // Use the getRenderResponse flag to indicate that we have hit the end of the last phase that will
+      // be processed before the render. Handle the beforeRender at this time, as the next phase to 
+      // occur should be RENDER_RESPONSE
+      if( event.getPhaseId() != RENDER_RESPONSE && facesContext.getRenderResponse() )
+     	 beforeRender(event);
+
         FacesMessages.afterPhase();

After this change (and JBSEAM-1719) s:link/s:button works under jboss-portal 2.6


> s:link doesnt work correctly in a portlet
> -----------------------------------------
>
>                 Key: JBSEAM-1720
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-1720
>             Project: JBoss Seam
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.0.BETA1
>            Reporter: Chris Rudd
>
> When using a s:link inside a portlet application the actionMethod/etc are not properly processed.
> Ive traced this down, the current SeamPhaseListener processes pageActions and the s:link/s:button as part of the beforeRender processing. The actionMethod/actionOutcome/etc parameters are only passed to the portlet during the processAction portlet request. The beforeRender is executed during the doView portlet request, which doesnt have access to those parameters.
> One possible solution is to pass those parameters as renderparameters via the SeamPhaseListener.setPortletRenderParameter so that they are accessible to the doView render process.
> I think the better solution is to have all that processing occur during the processAction phase instead of the doView phase.
> The following change seems to work :
> SeamPhaseListener.afterPortletPhase line 258
> +      // Use the getRenderResponse flag to indicate that we have hit the end of the last phase that will
> +      // be processed before the render. Handle the beforeRender at this time, as the next phase to 
> +      // occur should be RENDER_RESPONSE
> +      if( event.getPhaseId() != RENDER_RESPONSE && (facesContext.getRenderResponse() || event.getPhaseId() == INVOKE_APPLICATION )
> +     	 beforeRender(event);
> +
>          FacesMessages.afterPhase();
> After this change (and JBSEAM-1719) s:link/s:button works under jboss-portal 2.6

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list