Does this suggest that the core tag libraries (specifically org.apache.struts.taglib.html) have the wrong model for cleanup? That is, they reset their tags to known-good state in release() and not at the end of doEndTag(). Should this resetting take place after doEndTag() and release() be reserved for releasing long-held resources (there seem to be none of these)?
> -----Original Message----- > From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, February 04, 2003 12:25 PM > To: Struts Developers List > Subject: Re: DO NOT REPLY [Bug 16749] - Struts EL tag > handlers cannot be > reused by containers > > > > > On Tue, 4 Feb 2003 [EMAIL PROTECTED] wrote: > > > > > Struts EL tag handlers cannot be reused by containers > > > > It sounds like these tags definitely have a problem. There's > been some > recent discussion on TOMCAT-USER about designing tags that > work reusably > as well. > > The bottom line: > > * The container can reuse instances of tag handlers > when it sees that exactly the same set of attributes > is used (not necessarily the same values). > > * This kind of reuse can happen whether or not the > container implements "tag pooling". > > * When a tag handler instance is reused, the JSP page > compiler can decide if it has already set a particular > property on that instance, and omit the second set call. > For example, in: > <foo:bar a="1" b="2/> > <foo:bar a="1" b="3"/> > The second setA() call can be omitted, since the container > knows that it already called setA("1") the first time. > > * If a tag instance is going to be reused, the doEndTag() > call on the first use is going to be followed by the > doStartTag() call of the second use. Any per-use cleanup > activity needs to happen at the end of doEndTag(). > > * The net effect of all this is an important restriction -- it's > not legal for a tag handler to modify the values stored by > the setter calls from the page, *anywhere* in the path from > doStartTag() through doEndTag(). > > * The container will call release() after it has used the > instance for the last time. > > Craig > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]