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


Reply via email to