Yeah. that would be my feeling.
You treat the component much more like the blackbox it is with that. regards, Martin On 2/12/06, Jacob Hookom <[EMAIL PROTECTED]> wrote: > Thanks Martin, > > So your feelings are that the API would be better served with being able > to explicitly pass a visitor or callback to a visitComponent? > > -- Jacob > > Martin Marinschek wrote: > > >Well, I don't know if you remember the last part of the discussion > >you, Adam, Manfred and me had on this topic. > > > >If you remember I originally wanted to have something like a > >visitComponent(). Now this is only possible with a spec-change - so I > >took your original approach of creating a "ProcessingContext" and used > >that on what I had in the current API. > > > >Now that is the findComponent method - which I took and rebuilt to > >deliver a wrapper. > > > >As long as we are in one and only one thread (which is true for JSF of > >course), there shouldn't be a problem with your scenario, as on every > >call of a method on this wrapper, I set and reset the rowIndex right > >before and after the call. > > > >I provide a visitComponent() method on this wrapper en plus - I still > >think this is the good stuff, and I'd love to get rid of findComponent > >and have a visitComponent instead ;). > > > >And no, this won't work if we're not in a NamingContainer that is not > >aware that it has to override findComponent. > > > >regards, > > > >Martin > > > >On 2/12/06, Jacob Hookom <[EMAIL PROTECTED]> wrote: > > > > > >>The reason why I ask is that we are trying to correct this for JSF 1.2, > >>and I'd like to know if you've come up with an alternate, working solution. > >> > >>Example: > >> > >>UIComponent cA = root.findComponent("_id0:mytable:4:text"); > >>UIComponent cB = root.findComponent("_id0:mytable:9:text"); > >> > >>cA.encodeAll(faces); > >>cB.encodeAll(faces); > >> > >>What's the expected output? Is the instance returned for cA stateful > >>for the 4th iteration of 'mytable'? If I do get the UIComponent and > >>'mytable' is left at row 4, what happens when I operate on cB, does it > >>invalidate cA? > >> > >>Also, will this solution work for all NamingContainers, even if they > >>don't extend UIData? > >> > >>Thanks! > >> > >>Jacob Hookom wrote: > >> > >> > >> > >>>But doesn't that break spec? > >>> > >>>Are you returning the UIComponent itself or some proxy instance? > >>> > >>>Martin Marinschek wrote: > >>> > >>> > >>> > >>>>Yes - but I extended the findComponent concept for data table to allow > >>>>scoped id's with a row-identifier included, so this is now much the > >>>>same as a client-id, except if the renderer does a conversion. > >>>> > >>>>So what Dave wants ought to work. In the latest nightly build and > >>>>several before them. > >>>> > >>>>regards, > >>>> > >>>>Martin > >>>> > >>>>On 2/12/06, Jacob Hookom <[EMAIL PROTECTED]> wrote: > >>>> > >>>> > >>>> > >>>> > >>>>>findComponent has nothing to do with client ids. They work off of > >>>>>different logic. > >>>>> > >>>>>Martin Marinschek (JIRA) wrote: > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>>> [ > >>>>>>http://issues.apache.org/jira/browse/MYFACES-1110?page=comments#action_12366049 > >>>>>>] > >>>>>> > >>>>>>Martin Marinschek commented on MYFACES-1110: > >>>>>>-------------------------------------------- > >>>>>> > >>>>>>Hmmm... > >>>>>> > >>>>>>yes, you should be able to search from the view-root no problem. > >>>>>> > >>>>>>Can you debug a little through find-component? > >>>>>> > >>>>>>I have a working test-case in tomahawks test source, plus we use > >>>>>>the method successfully in the AJAX part. > >>>>>> > >>>>>>regards, > >>>>>> > >>>>>>Martin > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>findComponent return null for a valid clientId > >>>>>>>---------------------------------------------- > >>>>>>> > >>>>>>> Key: MYFACES-1110 > >>>>>>> URL: http://issues.apache.org/jira/browse/MYFACES-1110 > >>>>>>> Project: MyFaces > >>>>>>> Type: Bug > >>>>>>>Components: Implementation > >>>>>>> Versions: Nightly > >>>>>>>Environment: JBoss 4.0.3, XP > >>>>>>> Reporter: Dave > >>>>>>> Assignee: Martin Marinschek > >>>>>>> Priority: Critical > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>In a PhaseListener, first get all the clientId(s) with queued > >>>>>>>messages, then try to find the components. But > >>>>>>>ViewRoot.findComponent(clientId) return null. > >>>>>>> > >>>>>>>public void beforePhase(PhaseEvent event) { > >>>>>>> FacesContext context = event.getFacesContext(); > >>>>>>> UIViewRoot root = context.getViewRoot(); > >>>>>>> Iterator<String> itr = context.getClientIdsWithMessages(); > >>>>>>> while (itr.hasNext()) { > >>>>>>> String clientId = itr.next(); > >>>>>>> UIComponent component = root.findComponent(clientId); > >>>>>>> // ERROR: component is null > >>>>>>> .... > >>>>>>> } > >>>>>>>} > >>>>>>> > >>>>>>>From debugger, clientId is > >>>>>>> > >>>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>emp:empForm:empTable:1:salary:_idJsp144 > >>>>>>>The clientId is returned from context.getClientIdsWithMessages(); > >>>>>>>It must be valid, but root.findComponent() returns NULL. > >>>>>>>JSF should have the following API > >>>>>>>FacesContext.getComponentsWithMessages(); > >>>>>>>which is better than getClientIdsWithMessages(); > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>-- > >>>>>Jacob Hookom - Minneapolis > >>>>>---------------------------- > >>>>>JSF-EG, JSF-RI, EL, Facelets > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>> > >>>>-- > >>>> > >>>>http://www.irian.at > >>>> > >>>>Your JSF powerhouse - > >>>>JSF Consulting, Development and > >>>>Courses in English and German > >>>> > >>>>Professional Support for Apache MyFaces > >>>> > >>>> > >>>> > >>>> > >>>> > >>> > >>> > >>-- > >>Jacob Hookom - Minneapolis > >>---------------------------- > >>JSF-EG, JSF-RI, EL, Facelets > >> > >> > >> > >> > > > > > >-- > > > >http://www.irian.at > > > >Your JSF powerhouse - > >JSF Consulting, Development and > >Courses in English and German > > > >Professional Support for Apache MyFaces > > > > > > > > > -- > Jacob Hookom - Minneapolis > ---------------------------- > JSF-EG, JSF-RI, EL, Facelets > > -- http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces