Uploaded image for project: 'PUBLIC - Liferay Faces'
  1. PUBLIC - Liferay Faces
  2. FACES-1285

Incoming public render parameters not getting processed during RENDER_PHASE due to IPCPhaseListener not getting invoked

    Details

      Description

      This problem was revealed by the TCK TestPage054 prpUpdatedFromActionTest, which tests a very rare use-case. The test uses a single portlet that is updating a Public Render Parameter in the ACTION_PHASE of the portlet lifecycle that is meant to be processed by that same portlet in the RENDER_PHASE.

      The reason why this works in the Apache MyFaces Portlet Bridge is because it always calls lifecycle.execute() during the RENDER_PHASE, even if lifecycle.execute() was already called during the ACTION_PHASE.

      For performance reasons, Liferay Faces Bridge doesn't do it that way – instead, it only calls lifecycle.execute() in the RENDER_PHASE if it wasn't already called during the ACTION_PHASE (see else condition below). In order INNER-Portlet Communication to work, will be necessary for BridgePhaseRenderImpl to force the bridge's IPCPhaseListener to execute so that the Public Render Parameters are pushed into the model.

      One benefit of fixing this problem, is that the proposal for PORTLETBRIDGE-209 can be withdrawn, and the workaround in BridgeRequestScopeManagerImpl will no longer be necessary.

        Attachments

          Activity

            People

            • Assignee:
              neil.griffin Neil Griffin
              Reporter:
              neil.griffin Neil Griffin
              Participants of an Issue:
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Packages

                Version Package
                liferay-faces-3.0.0-legacy-ga1
                liferay-faces-3.0.0-ga1
                liferay-faces-3.1.0-ga1