1

我知道您可以使用<jsp:useBean>标记在 JSP 中实例化对象,而无需借助 scriptlet 代码。但是,我想实例化一个 Integer,其 value 是 EL 表达式的结果,例如:

<jsp:useBean id="total" class="java.lang.Integer">
    <jsp:setProperty name="amount" value="${param1 + param2}"/>
</jsp:useBean>

当然这是行不通的,因为 Integer 对象没有名为“amount”的属性,设置它们的值的唯一方法是通过构造函数参数(即 Integer 对象是不可变的)。有没有办法在不使用 scriptlet 代码的情况下实例化这样的对象并设置它的值?

谢谢,唐

4

3 回答 3

1

原始包装器也没有默认构造函数,因此您甚至无法以这种方式初始化一个。

我不确定 EL 是否应该以这种方式使用。它更像是一种模板语言。目前尚不清楚您尝试做的事情与以下内容相比有什么优势:

<%
  Integer total = new Integer(param1 + param2);
%>

然后在需要输出值的地方使用 <%= total %> 。你也可以这样做:

<%
  pageContext.setAttribute("total", new Integer(param1 + param2));
%>

如果您希望该值像 useBean 那样在页面范围内。

于 2008-12-08T23:55:03.833 回答
1

<c:set var="amount" value="${param1 + param2}" scope="page" />

于 2008-12-09T03:48:52.300 回答
0

如果你有一个 bean,你能用 param1 和 2 更新 bean 吗?创建一个方法 setAmount(param1, param2),并在使用 getAmount() 之前设置它,这是 bean 将要调用的。

于 2008-12-08T22:17:39.503 回答