Hi<br><br>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? <br><br>Checking the new visit tree api, UIData.visitTree cleary says:<br>
<br><i>"....If this component has children, for each UIColumn child:<br><br>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.<br>
<br>If the child UIColumn has facets, call UIComponent.visitTree(javax.faces.component.visit.VisitContext, javax.faces.component.visit.VisitCallback) on each one....."<br></i><br>I think we should do something like this:<br>
<br> for (Iterator<UIComponent> itChildren = this.getChildren().iterator();<br> !returnValue && itChildren.hasNext();)<br> {<br> UIComponent child = itChildren.next();<br>
if (child instanceof UIColumn && clientId.equals(child.getClientId()))<br> {<br> try {<br> callback.invokeContextCallback(context, child);<br>
} catch (Exception e) {<br> throw new FacesException(e);<br> }<br> returnValue = true;<br> }<br> // process the child's facets<br>
for (Iterator<UIComponent> itChildFacets = child.getFacets().values().iterator(); <br> !returnValue && itChildFacets.hasNext();)<br> {<br> //recursive call to find the component<br>
returnValue = itChildFacets.next().invokeOnComponent(context, clientId, callback);<br> }<br> }<br><br>Does that sounds reasonable? Should be fixed on 1.2.x branch too?<br>
<br>regards,<br><br>Leonardo Uribe<br><br>