1 Reply Latest reply on Aug 16, 2011 2:37 AM by tjoe

    Using a4j:poll as a composit component

    tjoe

      Hello,

       

      I tried to swap out the a4j:poll component but i can't get it to work.

       

      Problem is, that i want to pass an ActionListener to that composit component and the following error occurs:

       

      14:49:03,515 ERROR [stderr] (http--127.0.0.1-8080-6) javax.faces.FacesException: javax.el.MethodNotFoundException: Method not found: com.sun.faces.el.CompositeComponentAttributesELResolver$ExpressionEvalMap@189bbdf.actionListener(javax.faces.event.ActionEvent)

       

      Here is my composit component:

       

      <cc:interface>  

         <cc:attribute name="render" required="false" default="@none" />

         <cc:attribute name="actionListener" required="true" method-signature="void action(javax.faces.event.ActionEvent)" />

      </cc:interface>

       

      <cc:implementation>

         <h:form>

            <a4j:poll id="poll"

               interval="3000"

               enabled="true"

               render="#{cc.attrs.render}"

               actionListener="#{cc.attrs.actionListener}"

               ajaxSingle="true"

               limitToList="true" />

         </h:form>

      </cc:implementation>

       

      And here is how i try to use it:

       

      <myComponent:poll actionListener="#{bean.listener}" render="sample" />

       

      And last but not least the signature of my bean action listener:

       

      public void listener(ActionEvent ae) {

       

       

       

      The strange part is, that if i use a (for example) a4j:commandButton component inside the form instead.. it just works!

       

      <a4j:commandButton actionListener="#{cc.attrs.actionListener}" value="Press me" />

       

      Any suggestions? Is it a bug or something? Or am I doing something wrong?

       

      JSF 2.0.4

      RF 4.0.0

       

      Thanks in advance,

      Tim

        • 1. Re: Using a4j:poll as a composit component
          tjoe

          Hi,

           

          there is a workaround for this problem (for those who are interested):

           

          <cc:implementation>

             <h:form>

                <a4j:poll id="poll"

                   interval="#{cc.attrs.interval}"

                   enabled="#{cc.attrs.enabled}"

                   render="#{cc.attrs.render}"

                   ajaxSingle="true"

                   limitToList="true">

                   <a4j:actionListener listener="#{cc.attrs.actionListener}" />

                </a4j:poll>

             </h:form>

          </cc:implementation>