создание неизменяемых объектов в JSPS
Вопрос
Я знаю, что ты можешь использовать <jsp:useBean>
тег для создания экземпляров объектов в JSP, не прибегая к скриптлетному коду.Однако я хотел бы создать экземпляр целого числа, значение которого является результатом выражения EL, что-то вроде:
<jsp:useBean id="total" class="java.lang.Integer">
<jsp:setProperty name="amount" value="${param1 + param2}"/>
</jsp:useBean>
Конечно, это не сработает, потому что целочисленные объекты не имеют свойства с именем 'amount', единственный способ установить их значение - это через параметр конструктора (т.Е.Целочисленные объекты неизменяемы).Есть ли какой-нибудь способ создать экземпляр такого объекта и установить его значение без использования кода скриптлета?
Спасибо, Дон
Решение
<c:set var="amount" value="${param1 + param2}" scope="page" />
Другие советы
Примитивные оболочки также не имеют конструктора по умолчанию, поэтому вы даже не можете инициализировать его таким образом.
Я не уверен, что EL следует использовать именно таким образом.Это скорее язык шаблонов.Неясно, какое преимущество то, что вы пытаетесь сделать, имеет перед чем-то вроде:
<%
Integer total = new Integer(param1 + param2);
%>
А затем просто используя <%= итого %> где вам нужно вывести значение.Вы также могли бы сделать:
<%
pageContext.setAttribute("total", new Integer(param1 + param2));
%>
если вы хотите, чтобы значение находилось в области страницы, как это сделает useBean.
Если у вас есть компонент, можете ли вы просто обновить компонент с помощью param1 и 2?Создайте метод setAmount(param1, param2) и установите его перед использованием getAmount(), который будет вызывать компонент.