You knew that in 1.1 this wouldn't work, right? the createUniqueId counter would have been reset on every request, both in the RI and MyFaces.
regards, Martin On 7/13/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
I'm not completely sure how Ed has setup the JSF JSP tags, but Facelets goes purely off of the expectation that the UIViewRoot will always produce a new unique value. When we bring in concepts like JspIdConsumer, which Facelets has too with TagIds-- but it's only internal to the [Tag]Handler and shouldn't need to be used as identifiers on the resulting output. Basically, each invocation of the Tag, the page's [Jsp]Id will be assigned. The Tomcat 6 stuff I worked on does something like: [URI HASH] + [POS OF TAG] + [COUNTER UNIQUE TO THIS TAG] The reason for this is repeatability for mark'n'sweep processing. We'd like to be able to compare set identifiers on the component model for succeeding passes to know when a component is brought in our out of the Component Tree while allowing for JSTL/Control tags in the page. Facelets instead sets a unique Attribute on the UIComponent, leaving the actual ID up to the UIViewRoot/Impl. -- Jacob >Yes, my qualm is with the 'jsp' prefix. My problem is that (even though >it would be good if we didn't) we have many automated tests that have >been written using the old ids (and they are the same ids as the RI, so >the same tests work with the RI as well). > >I know the 'right' long-term solution is to make our tests >id-independent (or assign ids to everything in out JSP file). Given that >this isn't a JSF 1.2 implementation, I was hoping for a short term fix >to my problem, but it sounds like your current solution depends on the >prefix being different from the Servlet id prefix. > >> -----Original Message----- >> From: Jacob Hookom [mailto:[EMAIL PROTECTED] >> Sent: Wednesday, July 12, 2006 11:51 PM >> To: MyFaces Development >> Subject: Re: Ids in 1.1.3 and 1.1.4 >> >> Unique Id generation aside, I think the qualm was with the 'jsp' >prefix >> in the generated IDs. I know that JSP 2.1 has the ability to assign >ids >> unique to a tag on a page, but that's different than what you are >> describing. >> >> Martin Marinschek wrote: >> > The problem is that there is a bug in the spec here. >> > >> > If you called createUniqueId in earlier MyFaces versions, you would >> > receive a unique id, but only unique for one request. On the next >> > request, the sequence would be restarted. This would make working >with >> > dynamic component creation exceptionally hard, if not impossible. On >> > subsequent requests, the sequence counter would'nt start anew, and >> > you'd get DuplicateIdExceptions all over! >> > >> > To fix this, we went to be more inline with what JSF1.2 foresees for >> > id creation. JSF 1.2 wants the servlet container to create unique >ids >> > - so we loose control about the ids produced, and createUniqueId is >> > never called. Note: when we all move to 1.2, you won't know about >the >> > id-syntax anymore anyways - the servlet container provides the >unique >> > ids then. >> > >> > We implemented a partial solution of this - we have a separate >counter >> > for JSP-tags; and those ids are produced out of a different >sequence. >> > To make sure that the id's don't match, we prepend a "jsp" in front >of >> > the actual unique id counter. >> > >> > With this solution, we can store the current sequence counter of >> > createUniqueId between requests, and dynamic component creation is >not >> > a problem anymore! >> > >> > I wonder why you would need the component id to have a special >syntax? >> > Do you rely in any way on this? >> > >> > regards, >> > >> > Martin >> > >> > On 7/12/06, *Gary VanMatre* <[EMAIL PROTECTED] >> > <mailto:[EMAIL PROTECTED]>> wrote: >> > >> > >From: "Matthias Wessendorf" <[EMAIL PROTECTED] >> > <mailto:[EMAIL PROTECTED]>> >> > >> > > >> > > Hey Howard, >> > > >> > > you mean stuff like ? >> > > >> > > >> > >> > >> > > >> > >> > >> > > Was introduced in " Revision 359449" >> > > >> > > see >> > > http://svn.apache.org/viewvc?view=rev&revision=359449 >> > <http://svn.apache.org/viewvc?view=rev&revision=359449> >> > > >> > > I can't tell you much about that. sorry! >> > > >> > >> > >> > >> > I did some research on this for Shale Clay. Clay has to >> > conditionally decide to use the ViewRoot to create a unique id >or >> > use another method. It looks like it has to do with partial >page >> > rendering. I suspect it was added for ajax component support. >> > >> > That's pretty much the same answer as Matthias. >> > >> > >> > >> > > -Matt >> > >> > Gary >> > >> > > >> > > On 7/12/06, Abrams, Howard A wrote: >> > > > >> > > > >> > > > >> > > > >> > > > Hi, >> > > > >> > > > >> > > > >> > > > Is there any reason why the UIComponentTag appends "jsp" to >all >> > the >> > > > component ids in 1.1.3/1.1.4? Any chance this can be removed >> > for 1.1.4 so >> > > > that it returns the same ids as UIViewRoot.createUniqueId() >and >> > the RI? >> > > > >> > > > >> > > > >> > > > Thanks, >> > > > >> > > > h >> > > >> > > >> > > -- >> > > Matthias Wessendorf >> > > >> > > further stuff: >> > > blog: http://jroller.com/page/mwessendorf >> > > mail: mwessendorf-at-gmail-dot-com >> > >> > >> > >> > >> > -- >> > >> > http://www.irian.at >> > >> > Your JSF powerhouse - >> > JSF Consulting, Development and >> > Courses in English and German >> > >> > Professional Support for Apache MyFaces >> >> >> -- >> -------------------------- >> Sent from my FrankenBerry Wireless Handheld >> >
-- http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces