A couple of options:

1) Use a key for the checkbox that is a combination of the two keys,
combined with a character that cannot be in the keys themselves (e.g.
key1::key2).  They just separate them in the action, or better yet, have the
form separate them.

2) Use JavasSript on the check of a row to enable/disable the two hidden
fields.  Disabled fields do not get transferred to the server.  However,
this may not be an option because it is browser-dependant.

I'd probably go with the first option.

-- Michael D. Norman
   ProbuSoft -- Custom Software Development
   http://www.probusoft.com/
   913-390-6951
   [EMAIL PROTECTED]
 
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, February 24, 2004 8:51 AM
> To: [EMAIL PROTECTED]
> Subject: logic:iterate, checkboxes, and arrays of selected values...
> 
> Hi folks,
> 
> I have a problem which I have a kludgy solution for, and have to believe
> there is a more elegant way of doing it...  Here's the scenario.
> 
> The page displays a non-editable list of records in a database, with a
> checkbox at the beginning of each row.  The list is indeterminate length,
> based on selection criteria entered by the user in the previous page.  The
> user selects n number of rows, using the check boxes.  Those rows are to
> be
> deleted from the database.
> 
> The trick is that the rows have a three column key.  One is constant based
> on the user, so I need to get 2 pieces of information from each row before
> I can delete it.
> 
> My kludge is to have the value of the checkboxes be the indexId of the
> logic:iterate.  Each row has two hidden input fields, with the two
> required
> key values.  Something like this:
> 
>   <logic:iterate id="item" name="listForm" property="txnList" type
> ="Transaction" indexId="counter">
>     <tr>
>       <td width="69" align="center">
>         <input type="checkbox" name="selectedTxns" value="<%=counter%>"/>
>       </td>
>       ....  display data ...
>       <td width="88"><%=item.getTotal()%></td>
>       <!-- Hidden input fields so we can retrieve all the required data
> about the selected transaction... -->
>       <td class="sidelink" width="1">
>         <input type="hidden" name="orderIds" value="<%=item.getOrderID
> ()%>"/>
>       </td>
>       <td class="sidelink" width="1">
>         <input type="hidden" name="deptAreas" value="<%=item.getDeptArea
> ()%>"/>
>       </td>
>     </tr>
>   </logic:iterate>
> 
> In the formData bean, I have three String [ ] attributes to accept the
> values of the checkbox and the two hidden fields.
> 
> The problem is that since there is data in the hidden input fields for
> every row, I get every value back in the array, instead of only the data
> for the rows which are checked.  What I have to do in the action is read
> the values from the String [ ] for the checkbox , and use that value as
> the
> index into the other two string arrays.
> 
> Like I said, its kludgy, but it works...
> 
> But, I have to believe there's a way to send back an array of beans, with
> only the values of the fields for those rows which are checked, but I
> can't
> find anything in books or searching the web which describes how to do
> this.
> 
> Does anyone have a cleaner way to do this type of thing?
> 
> Thanx!
> 
> c'ya
> Mike
> ----
> Mike Boucher                  [EMAIL PROTECTED]
> Edgil Associates              www.edgil.com
> 
> "Don't take life too seriously, you'll never get out of it alive!"
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]



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

Reply via email to