[
https://issues.apache.org/jira/browse/PB-109?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12925830#action_12925830
]
Alexey Zavizionov commented on PB-109:
--------------------------------------
I have problem with two struts portlets: P1 and P2.
Let me explain the portal request sequency.
I have two portlets on a page.
I click on a link on the second portlet P2.
1. Portal execute process action on the P2
2. Portal execute render on the P1. [1]
3. Portal execute render on the P2.
In details:
1. P2 action
1.1 PortletServletRequestDispatcher.invoke
req.setAttribute(StrutsPortlet.RENDER_CONTEXT,
context);
1.2 StrutsPortlet.processRequest
StrutsPortletRenderContext renderContext =
(StrutsPortletRenderContext)req.getAttribute(RENDER_CONTEXT);
if ( renderContext != null )
{
portletSession.setAttribute(RENDER_CONTEXT,
renderContext);
// there may need to delete the attribute from
the req
2. P1 render
2.1 StrutsPortlet.processRequest
StrutsPortletRenderContext renderContext =
(StrutsPortletRenderContext)portletSession.getAttribute(RENDER_CONTEXT);
if ( renderContext != null ) { // <- ok, it is null
2.2 PortletServlet.performActionRenderRequest
StrutsPortletRenderContext context =
(StrutsPortletRenderContext)request.getAttribute(StrutsPortlet.RENDER_CONTEXT);
if (context != null)
{ // <--- and here we are! it is get the context from P2 stored
before (in action phase).
The problem is here!
We get the same ActionForm.
3. P2 render
3.1 StrutsPortlet.processRequest
StrutsPortletRenderContext renderContext =
(StrutsPortletRenderContext)portletSession.getAttribute(RENDER_CONTEXT);
if ( renderContext != null )
{
portletSession.removeAttribute(RENDER_CONTEXT);
req.setAttribute(RENDER_CONTEXT, renderContext);
3.2 PortletServlet.performActionRenderRequest
StrutsPortletRenderContext context =
(StrutsPortletRenderContext)request.getAttribute(StrutsPortlet.RENDER_CONTEXT);
if (context != null)
{
Finally, two portlets looks the similar.
FYI we didn't use attribute name encoding (per each portlet id) for names
starts with "javax." and "org.apache".
How it could be?
[1] The render requests may be executed sequentially or in parallel without any
guaranteed order. (Portlet spec 286 PLT.5.4 Request Handling )
> Problem with the request wrapper (user action is not considered)
> ----------------------------------------------------------------
>
> Key: PB-109
> URL: https://issues.apache.org/jira/browse/PB-109
> Project: Portals Bridges
> Issue Type: Bug
> Components: struts
> Affects Versions: 1.0.4
> Reporter: Ali Hamdi
> Priority: Minor
>
> We found a bug in Struts Portals bridge reported here :
> http://jira.exoplatform.org/browse/PC-512
> The fix done by eXo developer is here :
> http://jira.exoplatform.org/secure/attachment/25968/diff.txt
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]