Here it is.
----- Original Message -----
From: "Tom Miller" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Sunday, June 10, 2001 8:50 AM
Subject: Re: Grid / Matrix Controls Made Easy (src included)
> Jeff
>
> I'm very interested in trying your code, but only the TLD was attached.
> Would you please repost?
>
> Thanks
> Tom Miller
>
> Jeff Trent wrote:
>
> > Attached, you will find a couple of new tags I wrote to extend the
> > HTML tag library that comes with struts that will allow you to write
> > grid-style JSP code that looks like the following: <% int i =
> > 0; %>
> > <logic:iterate id="item" name="inventoryForm"
> > property="items">
> > <tr>
> > <td></td>
> > <td class="smallFont"><html:gridtext name="item"
> > property="name" index="<%= i %>" maxlength="nameMaxSize"
> > size="30"/></td>
> > <td class="smallFont"><html:gridtext name="item"
> > property="description" index="<%= i %>" maxlength="descriptionMaxSize"
> > size="50"/></td>
> > <td class="smallFont" align="center"
> > valign="center"><html:gridcheckbox name="item"
> > property="containerFlag" index="<%= i %>" value="Y"/></td>
> > </tr>
> > <% i++; %>
> > </logic:iterate> Here is a synopsis of what I did: (1)
> > added two tags called "gridtext" and "gridcheckbox" that are based on
> > html:text and html:checkbox respectfully. Note: All of the others
> > (ie. hidden, radio, select, etc.) need to eventually be handled in a
> > similar fashion but this is all I needed for right now. I'll keep you
> > posted on the rest as I create new gridXXX tags. Note 2: this code
> > has in no way been endorsed by Apache / Struts. Therefore, buyer
> > beware! This code could easily break in future releases to
> > struts. (2) gridtext can now optionally take an index field. If
> > no index is given, the behavior of gridtext degenerates to your
> > vanilla html:text tag. If index is specified, it will use the correct
> > semantics for referring to your iterated item in the collection.
> > (3) gridtext can now optionally take a bean property name in place of
> > a literal value for the maxlength. I felt this is more convenient
> > than the alternative (using scriptlet). To use this style, make sure
> > your underlying bean object (in the above case its the "item" bean),
> > has a member called getNameMaxSize() which returns a string. Note:
> > "size" still requires a literal, the bean will not be consulted if you
> > use a property name instead. (4) gridcheckbox. Well, let me tell
> > you - a lot was changed in gridcheckbox! I began by copying the code
> > for checkbox tag over to gridcheckbox. I changed all private
> > declarations over to protected, removed the 'final' on the class
> > declaration, and fixed a few bugs along the way. Bugs included: (a)
> > wrong target package, (b) used new RequestUtil to get bean value (not
> > really a bug), (c) handle the value parameter correctly (in the 3.2.1
> > release, the value clause was being confused with the data coming back
> > in the form post. gridcheckbox will really take your user-defined
> > value and put it in the "value" attribute. Also, "checked" logic will
> > use your "value" attribute and compare to datavalue posted from the
> > form. If value is not specified, the default value will be
> > "true"). (5) gridcheckbox can now optionally take an index field
> > just like gridtext... Also, note: this has not been qa'ed properly. I
> > wrote the code in under an hour and wham, here you go. If there are
> > bugs you find in the indexing logic, feel free to let me know. A few
> > words on checkboxes: As many of you know, if a form is posted and
> > no checkboxes are checked, html (and therefore struts) will not fire
> > the setter(s) for those checkbox properties. To solve this problem,
> > you should depend on your reset() method on your form to clear out all
> > of the checkbox values each time reset() is called. To incorporate
> > this code, do the following: (1) make a backup of your
> > struts-html.tld (2) overwrite your project-level struts-html.tld
> > with the one attached. (3) put GridTextTag.java &
> > GridCheckboxTag.java in your project. (4) send me email to let me
> > know how you fared with them ;^) I'd like to hear from
> > you. cheers,jeff
>
> --
> Tom Miller
> Miller Associates, Inc.
> [EMAIL PROTECTED]
> 641.469.3535 Phone
> 413.581.6326 FAX
>
>
GridTextTag.java
GridCheckboxTag.java