2008-12-08 5 views
1

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

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

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

Спасибо, Дон

ответ

1

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

0

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

1

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

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

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

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

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

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

Смежные вопросы