【问题标题】:creating immutable objects in JSPs在 JSP 中创建不可变对象
【发布时间】:2008-12-08 22:09:58
【问题描述】:

我知道您可以使用<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 代码的情况下实例化这样一个对象并设置它的值?

谢谢, 唐

【问题讨论】:

    标签: java jsp jsp-tags


    【解决方案1】:

    &lt;c:set var="amount" value="${param1 + param2}" scope="page" /&gt;

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-18
          相关资源
          最近更新 更多