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

Martin Marinschek mmarinschek at apache.org
Mon Apr 26 00:41:28 EDT 2010


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




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