tomcat-taglibs-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Duffy <duff...@yahoo.com>
Subject Re: Populating One <select> Based On The Value In Another
Date Tue, 06 May 2003 17:49:45 GMT

You're correct, of course, James, but I don't want any
SQL in my jsps.   The whole point of a front
controller is to get that kind of stuff out of the
JSPs.  

Database access is a back-end process, to be done on
the server side only IMHO.  JSPs should only be for
presentation.  

BTW, there's a nice Struts-based idea from Larry
Maturo of Athens Group that might help:

http://stealthis.athensgroup.com/presentations/Model_Layer_Framework/Struts_Whitepaper.pdf

It doesn't save a trip to the server, but it does
accomplish the "populate the second combo box after
selecting the first" goal.  

I'll be refactoring my work to use Struts once I've
got the whole thing working, so I'll probably take
advantage of Larry's technique at that time.

Thanks - MOD

--- James Smith <jksmith@email.arizona.edu> wrote:
> You can't go from JavaScript back to JSTL without
> another trip to the
> server; however, you certainly can use JSTL tags to
> create a map within
> JavaScript code, something like this:
> 
> <sql:query var="rs">
>     select ID, Name from tblSomeTable
> </sql:query>
> 
> <script language="javascript">
>     firstSelectHashMap = new Array();
>     <c:forEach var="row" items="${rs.rows}">
>         <sql:query var="rs2">
>             select ID, Name from tblChildTable where
> ParentID = ?
>             <sql:param value="${row.ID}" />
>         </sql:query>
>         secondSelectHashMapChoice = new Array();
>         <c:forEach var="row2" items="${rs2.rows}">
>             secondSelectHashMapChoice['<c:out
> value="${row2.ID}" />'] =
> '<c:out value="${row2.Name}" />';
>         </c:forEach>
>         firstSelectHashMap['<c:out value="${row.ID}"
> />'] = tempChild;
>     </c:forEach>
> </script>
> 
> My JavaScript is a bit rusty but it should look
> something like that.
> Anyway, that whole piece of code makes your page a
> lot larger, and then,
> when a select occurs, you've got to write the
> JavaScript to depopulate your
> second select box and repopulate it with the chosen
> secondSelectHashMapChoice.  So it's possible to code
> but it seems fairly
> nasty.  The second trip to the server is probably
> much wiser, unless a
> JavaScript guru out there has a brilliant method,
> probably involving forcing
> submits from forms within internal frames hidden by
> moving them off the page
> with CSS-P.
> 
> James Smith
> Application Systems Analyst, Treistman Center
> College of Fine Arts, University of Arizona
> 
> ----- Original Message ----- 
> From: "Michael Duffy" <duffymo@yahoo.com>
> To: "Tag Libraries Users List"
> <taglibs-user@jakarta.apache.org>
> Sent: Tuesday, May 06, 2003 9:47 AM
> Subject: RE: Populating One <select> Based On The
> Value In Another
> 
> 
> >
> > I've got a front controller servlet that takes
> > requests, executes commands, puts results into the
> > request, and forwards them onto the next page. 
> The
> > next page can certainly do this:
> >
> > <jsp:useBean id="something"
> class="java.util.Map"/>
> >
> > Now I can access the map by writing:
> >
> > "${something['key']}"
> >
> > If the Map has String keys and java.util.List
> values,
> > I can get the value and stuff it into a JSTL
> > <c:forEach> tag.
> >
> > Actually , I haven't gone to ANY trouble yet
> because
> > I've just started on this effort.  ;)  It was just
> an
> > idea.  I thought that if there was a way to get
> the
> > value out of DHTML and into JSTL that I was
> ignorant
> > of I'd be glad to know it.
> >
> > But the dearth of information has brought me to
> the
> > same conclusion that you're drawing: it's not
> > possible.  I'll just populate both drop-downs at
> the
> > same time.  Thanks. - MOD
> >
> >
> > --- Wendy Smoak <Wendy.Smoak@asu.edu> wrote:
> > > Michael wrote:
> > > > Exactly.  It's a choice between doing it on
> the
> > > client
> > > > side or enduring another round-trip to the
> server.
> > >  I
> > > > know how to get it from the server, but I was
> > > hoping
> > > > that I could send a java.util.Map down when
> the
> > > page
> > > > is rendered and save myself a trip.
> > >
> > > All the Java/JSP/JSTL code executes on the
> server,
> > > so I don't see where you
> > > could "send" a Map down to the client side. 
> Maybe
> > > an applet?  You could
> > > surely render the *contents* of the Map into a
> > > JavaScript data structure.
> > > (Does JavaScript have a Map structure?) And then
> use
> > > client-side JavaScript
> > > to populate the second drop-down once the user
> has
> > > made a selection from the
> > > first.
> > >
> > > > But this is the first time I've had the
> problem of
> > > > populating one drop-down using the choice from
> > > > another.  I know how to get the selection from
> the
> > > > first box out of JavaScript.  Getting that
> value
> > > into
> > > > JSTL and the EL is the thing that I'm fuzzy
> on.
> > >
> > > It's one or the other.  Since JavaScript is
> > > client-side, and JSTL/EL is
> > > server-side, you can't get the value out of
> > > JavaScript and into JSTL.  If
> > > you want to save a trip to the server, then I
> don't
> > > believe JSTL will be of
> > > any help.
> > >
> > > How much of a load will this site be under?  Is
> an
> > > extra round trip to the
> > > server really that important?  You may be going
> to a
> > > lot of trouble to avoid
> > > something that isn't really going to be a
> problem.
> > >
> > > -- 
> > > Wendy Smoak
> > > Applications Systems Analyst, Sr.
> > > Arizona State University PA Information
> Resources
> > > Management
> > >
> >
> >
> > __________________________________
> > Do you Yahoo!?
> > The New Yahoo! Search - Faster. Easier. Bingo.
> > http://search.yahoo.com
> >
> >
>
---------------------------------------------------------------------
> > To unsubscribe, e-mail:
> taglibs-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail:
> taglibs-user-help@jakarta.apache.org
> >
> 
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> taglibs-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail:
> taglibs-user-help@jakarta.apache.org
> 


__________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo.
http://search.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: taglibs-user-help@jakarta.apache.org


Mime
View raw message