在JSP中创建不可变对象

时间:2008-12-08 22:09:59

标签: java jsp jsp-tags

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

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

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

谢谢, 唐

3 个答案:

答案 0 :(得分:1)

原始包装器也没有默认构造函数,所以你甚至不能用那种方式初始化它。

我不确定EL应该以这种方式使用。它更像是一种模板语言。目前尚不清楚你要做的事情有什么优势:

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

然后只使用&lt;%= total%&gt;您需要输出值的位置。你也可以这样做:

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

如果你希望值在页面范围内,就像useBean那样。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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