2 Replies Latest reply: Jan 13, 2012 9:27 AM by Ken Finnigan RSS

    Public Render Parameter handler class not being executed

    Miguel Escaja Newbie

      Hi

       

      I have two portlet A (publishing) and B (Receiving). I have defined in both a Public Render Parameter called prpExample. Both portlets are deployed on to Tomcat 7.0.23 packaged with gatein 3.2.

       

      The h:commandButton on Portlet A is set up to call the actionListener handler class that in turn sets the Public Render Parameter prpExample, see below

         

         public void publishParameter(ActionEvent ae){

             if(getResponse() instanceof ActionResponse){

                 ActionResponse stateResponse = (ActionResponse) getResponse();

                 stateResponse.setRenderParameter("prpExample", "MyParamValue");

             }

         }

        

       

      The receiving portlet B has parameter value: #{user.prpExampleMember} in the view.xhtml

       

      I got all up and running, the public render parameter value gets set to "MyParamValue" and is then passed from Portlet A to B and it´s displayed correctly on the view.xhtml

       

      What I want to set up now is the Public Render Parameter Handler class called myPRPHandler. To do that I have created the handler class myPRPHandler in Portlet B

       

      package com.escaja.portlets;

       

      import javax.el.ELContext;

      import javax.faces.context.FacesContext;

      import javax.portlet.faces.BridgePublicRenderParameterHandler;

       

      public class MyPRPHandler implements BridgePublicRenderParameterHandler{

         

          public void processUpdates(FacesContext context){

              ELContext elContext = context.getELContext();

              UserJSFManagedBean userJSFManagedBean = (UserJSFManagedBean)elContext.getELResolver().getValue(elContext, null, "UserJSFManagedBean");

             

              System.out.println("parameter handler");

             

              if(null != userJSFManagedBean){

                  userJSFManagedBean.setPrpExampleMember("myPrpExampleValueChanged");

              } else {}

          }

      }

       

      An finally I added the following to the Portlet B descriptor (portlet.xml) file

       

        <init-param>
           <name>javax.portlet.faces.bridgePublicRenderParameterHandler</name>
           <value>com.escaja.portlets.myPRPHandler</value>
        </init-param>

       

      I would expect the view.xhtml to show the parameter value "myPrpExampleValueChanged" instead of "myPrpExampleValue", Basically the parameter handler class myPRPHandler seem as though it does not get fired at all. I would also expect the command line to show "parameter handler" due to the code line System.out.println("parameter handler"); but it´s never logged.

       

      Thanks