Вопрос

Я знаю, что ты можешь использовать <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(), который будет вызывать компонент.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top