Matthias, please always answer to the mailing list too, not just to my private email address. Otherwise no one can follow our discussion!
I am afraid you hit a problem of JSF 2.0. It's currently not possible to retarget a special method expression (like valueChangeListener) from one composite component to another (and, of course, also not to its children). See JSF spec issue: http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-755 Regards, Jakob 2011/3/16 ZEILERBAUER Matthias <matthias.zeilerba...@tirol.gv.at>: > > Here it is: > > "checkbox.xhtml" > <composite:interface name="checkbox"> > <composite:attribute name="valueChangeListener" method-signature="void > (javax.faces.event.ValueChangeEvent)" targets="${cc.attrs.id}" /> > </composite:interface> > > <composite:implementation> > <h:panelGroup> > <template:labelinput2 id="${cc.attrs.id}"> > <f:facet name="inputFacet"> > <h:selectBooleanCheckbox id="inputComponent" > value="#{cc.attrs.value}"> > <composite:insertChildren /> > </h:selectBooleanCheckbox> > </f:facet> > </template:labelinput2> > </h:panelGroup> > </composite:implementation> > > > > "labelinput2.xhtml" > <composite:interface name="labelinput" componentType="javax.faces.Input"> > <!-- Events --> > <composite:attribute name="valueChangeListener" method-signature="void > f(javax.faces.event.ValueChangeEvent)" targets="inputComponent" /> > <!-- Facets --> > <composite:facet name="inputFacet" /> > <composite:facet name="textFacet" /> > <!-- Component Ids --> > <composite:editableValueHolder name="inputComponent" /> > </composite:interface> > > <composite:implementation> > <h:panelGroup> > <div> > <h:panelGroup> > <div> > <h:outputLabel > for="inputComponent">#{cc.attrs.label}</h:outputLabel> > </div> > </h:panelGroup> > <div> > <composite:renderFacet name="inputFacet" > required="true" /> > <composite:renderFacet name="textFacet" /> > <composite:insertChildren /> > </div> > <div> > <h:message for="inputComponent" /> > </div> > </div> > </h:panelGroup> > </composite:implementation> > > > LG Matthias > > -----Ursprüngliche Nachricht----- > Von: sethfromaust...@gmail.com [mailto:sethfromaust...@gmail.com] Im Auftrag > von Jakob Korherr > Gesendet: Mittwoch, 16. März 2011 16:54 > An: MyFaces Development > Cc: ZEILERBAUER Matthias > Betreff: Re: ValueChangeListener + composite components > > Hi, > > the standard component is a UINamingContainer. Could you please send > me the whole markup of the composite component? > > Regards, > Jakob > > 2011/3/16 ZEILERBAUER Matthias <matthias.zeilerba...@tirol.gv.at>: >> Thanks for the code. But I still don't get it working. >> I didn't specify a componentType for my implementation, so it should be a >> standard implementation which does inherit the right finComponent() api. >> Also my nested composition is a standard implementation. But I do know now >> that the problem is with my nested compositions, that the >> ValueChangeListener is not passed to this nested composition. How do I do >> that? >> >> -----Ursprüngliche Nachricht----- >> Von: sethfromaust...@gmail.com [mailto:sethfromaust...@gmail.com] Im Auftrag >> von Jakob Korherr >> Gesendet: Mittwoch, 16. März 2011 16:21 >> An: MyFaces Development >> Cc: ZEILERBAUER Matthias >> Betreff: Re: ValueChangeListener + composite components >> >> Here is the code from >> FaceletViewDeclarationLanguage.retargetMethodExpressions: >> >> UIComponent innerComponent = topLevelComponent.findComponent(target); >> if (innerComponent == null) >> { >> if (log.isLoggable(Level.SEVERE)) >> log.severe("Inner component " + target + " not found when >> retargetMethodExpressions"); >> continue; >> } >> >> ...with topLevelComponent beeing the composite component. Thus, in >> your example, your composite component needs to be able to find the >> target component via findComponent(). >> >> Please refer to the javadoc of findComponent() and check if it is >> implement correctly on all the components inside your composite >> component. My guess is that the parent component of the f:facet does >> not check his facets in findComponent(). >> >> Regards, >> Jakob >> >> 2011/3/16 ZEILERBAUER Matthias <matthias.zeilerba...@tirol.gv.at>: >>> Doesn't work. I already proved it. >>> >>> LG Matthias >>> >>> -----Ursprüngliche Nachricht----- >>> Von: sethfromaust...@gmail.com [mailto:sethfromaust...@gmail.com] Im >>> Auftrag von Jakob Korherr >>> Gesendet: Mittwoch, 16. März 2011 16:03 >>> An: MyFaces Development >>> Cc: ZEILERBAUER Matthias >>> Betreff: Re: ValueChangeListener + composite components >>> >>> Hi Matthias, >>> >>> Try using the relative clientid of the h:inputText from within your >>> composite component, thus something like >>> container1:container2:inputComponent. >>> >>> Also, please ask questions like this one only at >>> us...@myfaces.apache.org, thanks. >>> >>> Regards, >>> Jakob >>> >>> 2011/3/16 ZEILERBAUER Matthias <matthias.zeilerba...@tirol.gv.at>: >>>> Hello guys, >>>> >>>> I have a problem with the valueChangeListener on my composite component. I >>>> = >>>> >>>> have following structure: >>>> >>>> <composite:interface name=3D"checkbox"> >>>> >>>> ... >>>> >>>> <composite:attribute name=3D"valueChangeListener" >>>> targets=3D"inputComponent= >>>> >>>> " /> >>>> >>>> ... >>>> >>>> </composite:interface> >>>> >>>> <composite:implementation> >>>> >>>> <template:c1> >>>> >>>> ... >>>> >>>> <f:facet name=3D"inputFacet"> >>>> >>>> <h:inputText id=3D"inputComponent" /> >>>> >>>> </f:facet> >>>> >>>> ... >>>> >>>> </template:c1> >>>> >>>> >>>> >>>> >>>> >>>> My error message is: >>>> >>>> "FaceletViewDe E Inner component valueChangeListener not found when >>>> retarge= >>>> >>>> tMethodExpressions" >>>> >>>> When I tried to give the >>>> >>>> <composite:attribute name=3D"valueChangeListener" >>>> targets=3D"inputComponent= >>>> >>>> " /> on my c1-Interface the Error-Message didn't appear, but the >>>> ValueChang= >>>> >>>> eListener still wasn't called. >>>> >>>> Second thing I tried was to give the >>>> >>>> <h:inputText id=3D"inputComponent" /> not in the facet-Definition, but >>>> only= >>>> >>>> in my implementation and then the ValueChangeListener worked. >>>> >>>> What is my mistake, or does composition not work properly with facets? >>>> >>>> LG >>>> >>>> >>> >>> >>> >>> -- >>> Jakob Korherr >>> >>> blog: http://www.jakobk.com >>> twitter: http://twitter.com/jakobkorherr >>> work: http://www.irian.at >>> >> >> >> >> -- >> Jakob Korherr >> >> blog: http://www.jakobk.com >> twitter: http://twitter.com/jakobkorherr >> work: http://www.irian.at >> > > > > -- > Jakob Korherr > > blog: http://www.jakobk.com > twitter: http://twitter.com/jakobkorherr > work: http://www.irian.at > -- Jakob Korherr blog: http://www.jakobk.com twitter: http://twitter.com/jakobkorherr work: http://www.irian.at