--- Sgarlata Matt <[EMAIL PROTECTED]> wrote:
> I hope it's OK for a non-committer to start a vote.  I know this has
> been a
> contentious issue, so I would like to clearly outline my plan for making
> the
> html taglibs more extensible and I would like a vote before I go to all
> the
> trouble of coding, updating documentation, resolving bugfixes, answering
> questions, etc.
> 
> DESIRED FUNCTIONALITY
> The ability to cleanly extend the Struts tags.  The tags are so good
> that
> when an application-specific requirement arises, it's much more
> desirable to
> extend from the Struts tag and keep tie-ins with ActionForms and such
> than
> it is to go off on your own.
> 
> PROPOSED SOLUTION
> The solution is two parts.  Please vote separately for each part of the
> solution.
> A) Instead of accessing instance variables directly, use getters.

+1.  I've done some checking on this in the past but another round is
probably needed.

> 
> <snip from="BaseFieldTag.java">
> if (accept != null) {
>     results.append(" accept=\"");
>     //old way
>     //results.append(accept);
>     //new way
>     results.append(getAccept());
>     results.append("\"");
> }
> </snip>
> 
> If someone wanted to override the accept attribute so that it was always
> equal to foo then they would be able to do so.  A better use case would
> be
> overriding the onclick method so that it does something special like
> display
> a calendar popup.  Getters are actually already used in some places
> (e.g. -
> prepareMouseEvents in BaseHandlerTag), so really this is just doing an
> audit
> on the code to ensure getters are used consistently throughout the
> taglib.
> 
> Use case for Part A:
> I built an implementation
> of Matt Kruse's JavaScript calendar widget based on the Struts tags a
> few
> weeks before Matt made his own implementation, so I have some experience
> doing this.  As some brief background, the widget is a text box and a
> corresponding calendar icon.  When you click on the calendar icon a
> popup
> appears where you can choose the date.  When you click on the text box
> (which is what overrides a Struts tag) you want onfocus to automatically
> call this.blur() so that the user can't enter text into the textbox
> (that's
> the calendar popup's job).  So in my subclass it would be nice to
> override
> the getOnfocus() method instead of overriding the entire
> renderIForgetWhatItIsCalled() method.  Of course in this particular
> instance
> getOnfocus() is already being used instead of onfocus being accessed
> directly, but I think this behavior should be consistent for all
> attributes.
> 
> B) Add a new renderExtraAttributes() method that gives people the chance
> to
> throw non-standard HTML into their tags that extend from Struts tags.

-1.  As I've stated previously, I don't think the Struts tags should
support emitting non-standard HTML.

David

> 
> <snip from="BaseFieldTag.java">
> results.append("\"");
> results.append(this.prepareEventHandlers());
> results.append(this.prepareStyles());
> results.append(this.getElementClose());
> 
> <matts-idea>
> results.append(renderExtraAttributes());
> </matt-sidea>
> 
> return results.toString();
> </snip>
> 
> Use Case for Part B:
> 
> Unfortunately I still can't think of a good HTML 4.01 compliant use case
> for
> renderExtraAttributes(), but here is a weak try at it.   If my other
> suggestion of having the render() method call getters instead of
> directly
> accessing instance variables is used, then renderExtraAttributes()
> becomes
> more important.  If it is not provided and someone wants to stick in
> some
> non-HTML 4.01 compliant HTML, what they will do is override something
> like
> the getSize() method so that it correctly renders the size and then
> sticks
> in the understandard HTML.  This is a nasty hack but you know a
> programmer
> will choose that over duplicating an entire render() method.
> 
> If you made it this far, thanks for reading this long email ;)  I know
> I've
> posted much of this before in several different messages, but hopefully
> this
> consolidation is useful.
> 
> Matt
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to