On Mon, 14 Jul 2003, Richard Hill wrote:

> Date: Mon, 14 Jul 2003 16:36:17 -0700
> From: Richard Hill <[EMAIL PROTECTED]>
> Reply-To: Struts Users Mailing List <[EMAIL PROTECTED]>
> To: "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]>
> Subject: Iterating the resultset contents in the view (jsp)
>
> Hi,
> I'm working on an action that gets a resultset from a database table
> containing 4 columns. I need to pass that information back to the view (jsp)
> which will iterate over results. My question is what is the best way to do
> this. Do I create an array for each row in the resultset and insert each
> array in a collection, passing that back to the view?
>

That is certainly one approach.  Indeed, commons-beanutils has a useful
little class (org.apache.commons.beanutils.RowSetDynaClass) that is
ideally suited to this use case.  It creates a List of DynaBeans
representing the data content returned by the SELECT.  Because it makes a
copy, you can close the result set (and return the connection back to the
connection pool) before forwarding to the page.

> If so, how would you iterate over each array in the collection with the
> logic:iterate taglib? All of the examples only show iterations over single
> column lists.
>

Let's assume you have done this in your Action:

  ResultSet rs = ...;
  RowSetDynaClass rsdc = new RowSetDynaClass(rs);
  rs.close();
  request.setAttribute("customers", rsdc.getList());

so you now have a request attribute containing the list.  Now, in your
page, you can say things like:

  <logic:iterate id="customer" name="customers">
    Name is <bean:write name="customer" property="name"/>
    Status is <bean:write name="customer" property="status"/>
  </logic:iterate>

and so on.  Details of RowSetDynaClass are in the javadocs for BeanUtils:

  http://jakarta.apache.org/commons/beanutils/

> Any help would be appreciated.
>
> Thanks,
> Richard
>

Craig

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

Reply via email to