BTW, the procedure I described breaks down in exactly the situation faced by the Struts EL tags, or any other tag handlers that subclass other handlers. This is because the superclass methods are directly referencing the private instance variables that contain the set attribute values. A subclass has no way to affect the behavior of the superclass by modifying the interpretation of attribute values, other than what it can do by overriding the setter method, which is often not sufficient.
To make a handler subclassable but still reusable, you have to make sure you only access attribute variables via getter methods that subclasses can override. Mark At 09:35 AM 2/4/2003, Mark Abbott wrote: >And presumably the container is required to call setters >on any attribute that is marked as rtexprvalue in the >tld, when reusing a handler. > >I always stick to a very simple procedure when writing handlers, >that matches what Craig said below: only modify the values >of the variables set by setter methods in the setters themselves >or in the release method. If some other part of the tag >execution needs to change this value, then at the beginning of >doStartTag you copy the set value into another instance variable >and work with that in all the doX methods. This is safe because >you are guaranteed single threading through all the doX methods >by the spec. > > Mark --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]