Hi I tried the following example:
<h:form id="mainForm"> <test:ajaxPanel2 onRowEditListener="#{ajaxListenerBean.ajaxRender}" value="#{ajaxListenerBean.value}"/> </h:form> ajaxPanel2.xhtml <cc:interface> <cc:attribute name="onRowEditListener" required="false" method-signature="void listener(javax.faces.event.AjaxBehaviorEvent)"/> <cc:attribute name="value"/> </cc:interface> <cc:implementation> <test:ajaxContent onRowEditListener="#{cc.attrs.onRowEditListener}"> <h:outputText value="#{cc.attrs.value}" /> </test:ajaxContent> </cc:implementation> ajaxContent.xhtml <cc:interface> <cc:attribute name="onRowEditListener" required="false" method-signature="void listener(javax.faces.event.AjaxBehaviorEvent)"/> </cc:interface> <cc:implementation> <h:commandButton value="Press me"> <f:ajax render="content" listener="#{cc.attrs.onRowEditListener}" /> </h:commandButton> <h:panelGroup id="content" layout="block"> <cc:insertChildren/> </h:panelGroup> </cc:implementation> @ManagedBean @RequestScoped public class AjaxListenerBean { private String value; /*... getter and setter ..*/ public void ajaxRender(AjaxBehaviorEvent evt) { value = Double.toString(Math.random()); System.out.println("value ="+value); } } Works without problem. I'm using jetty maven plugin 8.1.3.v20120416 , which uses glassfish EL. There is no evidence so far that there is a bug in MyFaces. That part has been tested intensively. I think it is a bug in tomcat EL implementation or maybe something related to openwebbeans EL10ValueExpression. regards, Leonardo Uribe 2012/7/23 Rafael Pestano <rmpest...@yahoo.com.br>: > Hi Ludovic, > > i've had similar problem with closeListener of primefaces dialog inside > composite components, my workaround was as follows: > > > <composite:interface componentType="yourpackage.ModalComposite"> > > <composite:attribute name="closeListener" method-signature="void > method(org.primefaces.event.CloseEvent)" shortDescription="action to call on > close - signature: void method(org.primefaces.event.CloseEvent)"/> > ... other attributes... > > <composite:implementation > > <p:dialog header="#{cc.attrs.header}" > //some attrs > > > <p:ajax event="close" > listener="#{cc.closeListener}" //here is the important > part > update="#{cc.attrs.onCloseUpdate}" > process="@this"/> > //other stuff > > > and finally the java class which handles the component > > @FacesComponent(value="yourpackage.ModalComposite") > public class ModalComposite extends UINamingContainer { > > @Override > public String getFamily() { > return "javax.faces.NamingContainer"; // Important! Required for > composite components. > } > > > public void closeListener(CloseEvent event) { > FacesContext context = FacesContext.getCurrentInstance(); > MethodExpression ajaxEventListener = (MethodExpression) > getAttributes().get("closeListener"); > if(ajaxEventListener != null){ > ajaxEventListener.invoke(context.getELContext(), new Object[] { > event }); > } > } > > and here is how to use it: > > <tag:modalComposite... > closeListener="#{myBean.clearSelection}" > > public class MyBean { > > public void clearSelection(CloseEvent event){ > this.selectedPeople = null; > } > } > > > maybe it helps as workaround for you.. > > > Att, > > Rafael M. Pestano > > Desenvolvedor Java Cia. de Processamento de Dados do Rio Grande do Sul > Graduando em Ciência da Computação UFRGS > http://conventionsframework.org > > http://rpestano.wordpress.com/ > @realpestano > > > ________________________________ > De: "l.pe...@senat.fr" <l.pe...@senat.fr> > Para: users@myfaces.apache.org > Enviadas: Segunda-feira, 23 de Julho de 2012 14:53 > Assunto: Re: Passing method parameters to nested composite component > > On 23/07/2012 19:39, Leonardo Uribe wrote: >> Hi >> >> Thinking more about it, check if both composite components define the >> attribute with method-signature. In theory, if there is a bug, it >> should be possible to reproduce it excluding primefaces and using >> actionListener or valueChangeListener instead. But first try the >> syntax using "targets" instead the cc EL expression. > I immediatly tried "targets" when you pointed it (on both declarations). It > did not help. > Both composite components declare the attribute with "method-signature". > > The value is used by the inner control in an ajax declaration of a primefaces > p:datatable : > > <p:ajax event="rowEdit" update="#{cc.attrs.onRowEdit}" > listener="#{cc.attrs.onRowEditListener}" /> > > I do not see how to use actionListener or valueChangeListener there. > > I tried (dirty) using cc.parent.attrs.onRowEditListener instead, and it did > not help. > > h:outputText of cc.parent.attrs.onRowEditListener seems correct : > > org.apache.el.MethodExpressionImpl@358f0647 > > Thx, > > Ludovic > > | > | AVANT D'IMPRIMER, PENSEZ A L'ENVIRONNEMENT. > |