On Tue, 25 Jun 2002, Hao Ding wrote:

> Hi,
> 
> I have not got an idea to solve the problem below. Can anybody give me
> a hand?

Hi Hao.  Sorry for the delay.

> The initial code is
> 
> <%@ page import="mm.*" %>
> <jsp:useBean id="cate" scope="session" class="mm.CateBean" />
> <jsp:useBean id="report" scope="page" class="mm.ReportBean" />

This code can stand if your goal is really to create the objects in a JSP
page.  If you instead want to retrieve the objects as exposed by a
servlet, you need no analogue to this code in a page that uses JSTL; no
preparation is necessary to use a scoped variable (though we have talked
about adding a <declare> tag in future versions of JSP or JSTL to improve
data typing, much along the lines of Perl's 'use strict').

> <%
> int idx = report.getId();
> mm.LData ld = cate.getLData(idx);
> %>
> 
> How to translate the Java code into EL using JSTL core library?

The first is straightforward; you may simply say '${report.id}' to
retrieve the result of the invocation to report.getId().  The latter is
trickier; JSTL's expression language isn't intended for method access.  If
you must pass a value to a method, you may do any of the following things,
some of which are better than others:

 - continue to use a scriptlet
 - write a custom tag
 - provide the logic through a bean, where the parameter is set (using
   perhaps the <c:set target="..." property="..." /> tag) as a bean
   property, and the result is later retrieved from another bean property.

Hope that helps,

-- 
Shawn Bayern
"JSTL in Action"   http://www.jstlbook.com
(coming in July 2002 from Manning Publications)


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

Reply via email to