Scott Van Wart wrote:
This is a little OT, but it, uh, kind of has to do with Struts :).

I'm interested in adding a few attributes to some of the struts tags. They're really only useful in the context of a specific web project I'm working on, so I'd really prefer not to edit the Struts TLD and implementation (for various other reasons too :).

Problem is, a lot of these have to do with view/layout, so I wanted to use .tag files. Everything's fine if I extend a single property, say <html:text property="blah" />:

 <%@ attribute name="property" required="true" type="java.lang.String" %>

 <html:text property="${property}" />

Problem is, there are a lot more attributes, most are optional, and different permutations, etc. Is there a relatively easy way of doing this in .tag files? Do I have to use tag classes and, if so, is it possible to tell the JSP processor to re-compile the stuff I output so it doesn't write <html:text property... /> verbatim to the client?

Unfortunately, this isn't really possible. Most tags behave differently if attributes are specified with an empty string / null value compared to if the attribute isn't provided. I brought this up, probably about a year ago now, and there was a fair bit of discussion. There's even a patch in bugzilla somewhere that implements one of the proposed solutions. Unfortunately, I never finished implementing the alternative solution so we could compare the two approaches and decide which (if either) should be rolled into Struts.

To answer your second question, no, you can't have a tag output <html:text ...> and have the JSP processed twice or something. You would need to write tags that generated the actual target markup. Again, extending the Struts tags this way isn't as easy as it could be. The basic pattern would be to sub-class the tag you want to extend, add the additional attributes you need, then make sure you do any attribute value manipulations in doStartTag() before calling super(). There are definitely limits to what you can achieve this way, but anything you might expect to be able to do with a .tag file should be achievable this way too.

L.


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

Reply via email to