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

Leonardo Uribe lu4242 at gmail.com
Fri Apr 23 13:52:00 EDT 2010


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jsr-314-open-mirror/attachments/20100423/e7820b2a/attachment-0002.html 


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