tomcat-taglibs-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Smith" <jksm...@email.arizona.edu>
Subject Re: Populating One <select> Based On The Value In Another
Date Tue, 06 May 2003 17:17:07 GMT
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


Mime
View raw message