[jsr-314-open-mirror] [jsr-314-open] Cannot call invokeOnComponent on UIColumn without rowIndex

Leonardo Uribe lu4242 at gmail.com
Mon Apr 26 01:31:29 EDT 2010


Hi Martin

Yes, it is necessary to compare the full client id. Really that
part of the algorithm is the same as UIComponent.invokeOnComponent,
but without propagate the callback to the children.

regards,

Leonardo

2010/4/25 Martin Marinschek <mmarinschek at apache.org>

> Hi Leonardo,
>
> yes, certainly this needs to be doable as well. For performance
> reasons - is it really necessary to compare the full client-id?
>
> best regards,
>
> Martin
>
> On Fri, Apr 23, 2010 at 7:52 PM, Leonardo Uribe <lu4242 at gmail.com> wrote:
> > Hi
> >
> > Looking some jsf 2.0 code, I notice the current algorithm of
> > UIData.invokeOnComponent cannot handle the case when the target is a
> > UIColumn instance and no rowIndex is on clientId. Is that ok?
> >
> > Checking the new visit tree api, UIData.visitTree cleary says:
> >
> > "....If this component has children, for each UIColumn child:
> >
> > Call VisitContext.invokeVisitCallback(javax.faces.component.UIComponent,
> > javax.faces.component.visit.VisitCallback) on that UIColumn instance. If
> > such a call returns true, terminate visiting and return true from this
> > method.
> >
> > If the child UIColumn has facets, call
> > UIComponent.visitTree(javax.faces.component.visit.VisitContext,
> > javax.faces.component.visit.VisitCallback) on each one....."
> >
> > I think we should do something like this:
> >
> >                 for (Iterator<UIComponent> itChildren =
> > this.getChildren().iterator();
> >                         !returnValue && itChildren.hasNext();)
> >                 {
> >                     UIComponent child = itChildren.next();
> >                     if (child instanceof UIColumn &&
> > clientId.equals(child.getClientId()))
> >                     {
> >                         try {
> >                             callback.invokeContextCallback(context,
> child);
> >                         } catch (Exception e) {
> >                             throw new FacesException(e);
> >                         }
> >                         returnValue = true;
> >                     }
> >                     // process the child's facets
> >                     for (Iterator<UIComponent> itChildFacets =
> > child.getFacets().values().iterator();
> >                             !returnValue && itChildFacets.hasNext();)
> >                     {
> >                         //recursive call to find the component
> >                         returnValue =
> > itChildFacets.next().invokeOnComponent(context, clientId, callback);
> >                     }
> >                 }
> >
> > Does that sounds reasonable? Should be fixed on 1.2.x branch too?
> >
> > regards,
> >
> > Leonardo Uribe
> >
> >
>
>
>
> --
>
> http://www.irian.at
>
> Your JSF powerhouse -
> JSF Consulting, Development and
> Courses in English and German
>
> Professional Support for Apache MyFaces
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jsr-314-open-mirror/attachments/20100426/839a3442/attachment-0002.html 


More information about the jsr-314-open-mirror mailing list