struts-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Craig R. McClanahan" <>
Subject Re: DO NOT REPLY [Bug 16749] - Struts EL tag handlers cannot be reused by containers
Date Tue, 04 Feb 2003 17:24:32 GMT

On Tue, 4 Feb 2003 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.


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message