struts-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Craig R. McClanahan" <craig...@apache.org>
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 bugzilla@apache.org 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: struts-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-dev-help@jakarta.apache.org


Mime
View raw message