That is true, but when columns are added to the table - you need not edit any file other than the jsp(doing it Kris' way).


From: David Graham <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
To: Struts Users Mailing List <[EMAIL PROTECTED]>
Subject: Re: Iterating the resultset contents in the view (jsp)
Date: Tue, 15 Jul 2003 06:39:35 -0700 (PDT)

--- Kris Schneider <[EMAIL PROTECTED]> wrote:
> Well, okay, that makes the discussion a bit more abstract ;-). I
> understand your
> point, but the bottom line is that it's just a namespace (package) and
> an
> external library (JAR file). To my mind, the real question with either
> Result or
> RowSetDynaClass is how far from the data layer do you want the column
> names to
> propagate? In some cases that may be all the way to the view layer.

This really has nothing to do with database column names because you can
use the SQL "AS" keyword to alias the names to anything you like.

David



>
> Quoting David Graham <[EMAIL PROTECTED]>:
>
> > --- Kris Schneider <[EMAIL PROTECTED]> wrote:
> > > I'll admit that using a package called javax.servlet.jsp.jstl.sql in
> a
> > > non-Web app is a bit odd, but I'm not seeing any dependencies on
> other
> > > javax.servlet classes or interfaces or a Web container. I haven't
> tried
> > > it, but I'd bet the examples below would work outside a Web app.
> >
> > Maybe, but it just feels wrong.  I know I've made a mistake when
> something
> > in the app doesn't feel right.
> >
> > David
> >
> > > Worth a try sometime...
> > >
> > > David Graham wrote:
> > > > That's certainly another option but keep in mind that it ties your
> app
> > > to
> > > > the web.  That may be ok if you don't plan on reusing any of the
> code
> > > from
> > > > the app but DynaBeans are more appropriate for building layers
> that
> > > are
> > > > reusable in any environment.
> > > >
> > > > David
> > > >
> > > > --- Kris Schneider <[EMAIL PROTECTED]> wrote:
> > > >
> > > >>Another datapoint: JSTL provides an interface called
> > > >>javax.servlet.jsp.jstl.sql.Result:
> > > >>
> > > >>public interface Result {
> > > >>   public SortedMap[] getRows();
> > > >>   public Object[][]  getRowsByIndex();
> > > >>   public String[]    getColumnNames();
> > > >>   public int         getRowCount();
> > > >>   public boolean     isLimitedByMaxRows();
> > > >>}
> > > >>
> > > >>and a utility class javax.servlet.jsp.jstl.sql.ResultSupport:
> > > >>
> > > >>public class ResultSupport {
> > > >>   public static Result toResult(ResultSet rs);
> > > >>   public static Result toResult(ResultSet rs, int maxRows);
> > > >>}
> > > >>
> > > >>to accomplish something similar. The SortedMap instances returned
> from
> > >
> > > >>Result.getRows are keyed by the ResultSet's column names and use
> the
> > > >>Comparator String.CASE_INSENSITIVE_ORDER so that you don't have to
> > > worry
> > > >>
> > > >>about matching the case of the column name exactly. So, depending
> on
> > > >>what your preference is, you can just do:
> > > >>
> > > >>ResultSet rs = ...;
> > > >>Result result = ResultSupport.toResult(rs);
> > > >>request.setAttribute(MyConstants.RESULT, result);
> > > >>
> > > >>or:
> > > >>
> > > >>ResultSet rs = ...;
> > > >>Result result = ResultSupport.toResult(rs);
> > > >>Map[] rows = result.getRows();
> > > >>request.setAttribute(MyConstants.ROWS, rows);
> > > >>
> > > >>David Graham wrote:
> > > >>
> > > >>>--- Richard Hill <[EMAIL PROTECTED]> wrote:
> > > >>>
> > > >>>
> > > >>>>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?
> > > >>>
> > > >>>
> > > >>>A fairly standard approach is to create a class that represents a
> row
> > > >>
> > > >>of
> > > >>
> > > >>>your ResultSet and store a List of those objects in the request
> for
> > > >>
> > > >>the
> > > >>
> > > >>>page to iterate over.
> > > >>>
> > > >>>If you don't want to create a class for each result, you should
> check
> > > >>
> > > >>out
> > > >>
> > > >>>the BeanUtils DynaBeans.  This little gem:
> > > >>>
> > > >>
> > > >
> > >
> >
>
http://jakarta.apache.org/commons/beanutils/api/org/apache/commons/beanutils/RowSetDynaClass.html
> > > >
> > > >>>allows you to transer ResultSet data to DynaBeans in a trivial
> amount
> > > >>
> > > >>of
> > > >>
> > > >>>code.
> > > >>>
> > > >>>David
> > > >>>
> > > >>>
> > > >>>
> > > >>>
> > > >>>>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.
> > > >>>>
> > > >>>>Any help would be appreciated.
> > > >>>>
> > > >>>>Thanks,
> > > >>>>Richard
> > > >>
> > > >>--
> > > >>Kris Schneider <mailto:[EMAIL PROTECTED]>
> > > >>D.O.Tech       <http://www.dotech.com/>
> > >
> > > --
> > > Kris Schneider <mailto:[EMAIL PROTECTED]>
> > > D.O.Tech       <http://www.dotech.com/>
>
> --
> Kris Schneider <mailto:[EMAIL PROTECTED]>
> D.O.Tech       <http://www.dotech.com/>


__________________________________ Do you Yahoo!? SBC Yahoo! DSL - Now only $29.95 per month! http://sbc.yahoo.com

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


_________________________________________________________________
STOP MORE SPAM with the new MSN 8 and get 2 months FREE* http://join.msn.com/?page=features/junkmail



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



Reply via email to