создание неизменяемых объектов в JSP - PullRequest
1 голос
/ 09 декабря 2008

Я знаю, что вы можете использовать тег <jsp:useBean> для создания экземпляров объектов в JSP без обращения к коду скриптлета. Однако я хотел бы создать экземпляр Integer, значение которого является результатом выражения EL, что-то вроде:

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

Конечно, это не сработает, потому что целочисленные объекты не имеют свойства с именем «сумма», единственный способ установить их значение - через параметр конструктора (т. Е. Целочисленные объекты неизменны). Есть ли способ создать такой объект и установить его значение без использования кода скриптлета?

Спасибо, Дон

Ответы [ 3 ]

1 голос
/ 09 декабря 2008

Примитивные оболочки также не имеют конструктора по умолчанию, поэтому вы даже не можете инициализировать его таким образом.

Я не уверен, что EL должен использоваться таким образом. Это больше язык шаблонов. Не ясно, какое преимущество имеет то, что вы пытаетесь сделать над чем-то вроде:

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

А затем просто используйте <% = total%>, где вам нужно вывести значение. Вы также можете сделать:

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

если вы хотите, чтобы значение находилось в области видимости страницы, как это делает useBean.

1 голос
/ 09 декабря 2008

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

0 голосов
/ 09 декабря 2008

Если у вас есть бин, можете ли вы обновить бин параметрами param1 и 2? Создайте метод setAmount (param1, param2) и установите его перед использованием getAmount (), который будет вызывать бин.

...