我知道您可以使用<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代码的情况下设置它的值?
谢谢, 唐
答案 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要调用的内容。