JSP.4.2 <jsp:setProperty>
Акция jsp:setProperty
устанавливает значения свойств в Bean'е. Атрибут name, обозначающий этот Bean, обязан быть определён до появления этой акции.
Имеются два варианта акции jsp:setProperty. Оба они устанавливают значение одного или более свойств в Bean на базе типа свойств. Обычно в Bean выполняется самоанализ с целью обнаружения существующих свойств, и, для каждого из них, имени, простое оно или индексированное, его типа и методов setter и getter. Самоанализ также указывает, имеет ли тип данного свойства класс PropertyEditor.
Свойства в Bean могут быть установлены из одного или более параметров объекта request, из String-константы или из вычисленного выражения времени запроса. Простые и индексированные свойства могут быть установлены с использованием jsp:setProperty.
При установке из параметра объекта request применяется конвертация, описанная в , использующая целевое свойство для определения целевого типа.
При присвоении из значения, заданного как String-константа, применяется конвертация, описанная в , использующая целевое свойство для определения целевого типа.
При присвоении из значения, заданного как атрибут времени запроса, никакая конвертация типов не применяется, как указано в Разделе .
При присвоении значений индексированным свойствам значение обязано быть массивом/array; к элементам применяются правила, описанные в предыдущем параграфе. Неудача конверсии приводит к ошибке времени трансляции или времени запроса.
Примеры
Следующие два элемента устанавливают значение из значений параметра request:
<jsp:setProperty name=”request” property=”*” />
<jsp:setProperty name=”user” property=”user” param=”username” />
Следующие два элемента устанавливают свойство из значения:
<jsp:setProperty name=”results” property=”row” value=”<%= i+1 %>” />
Синтаксис
<jsp:setProperty name="beanName" prop_expr />
prop_expr ::=
property="*" |
property=”propertyName”|
property=”propertyName” param="parameterName"|
property=”propertyName” value=”propertyValue”
propertyValue ::= string
Значение propertyValue может также быть значением атрибута времени запроса, как описано в .
propertyValue ::= expr_scriptlet
(См. синтаксис скриптлета выражения “<%= ... %>”)
Элемент <jsp:setProperty> имеет следующие атрибуты:
Таблица JSP.4-2
name | Имя экземпляра Bean'а, определённое элементом <jsp:useBean> или каким-либо другим элементом. Экземпляр Bean'а обязан содержать свойство, которое Вы хотите установить. Определяющий элемент обязан появиться до элемента <jsp:setProperty> в том же файле. |
property | Имя свойства Bean'а, значение которого Вы хотите установить. Если Вы устанавливаете propertyName в *, тогда тэг будет выполнять итерацию поверх текущих параметров ServletRequest, подбирая совпадения имён параметров и типа(-ов) значений с именами свойств и типом(-ами) метода setter, устанавливая каждое совпавшее свойство в значение совпадающего параметра. Если параметр имеет значение "", соответствующее свойство не модифицируется. |
param | Имя параметра запроса, значение которого Вы хотите дать свойству Bean'а. Имя параметра запроса приходит обычно от web-формы. Если param опущен, принимается, что имя параметра запроса - то же самое, что и имя свойства Bean'а. Если param не установлен в объекте Request или если он имеет значение ““, элемент jsp:setProperty не оказывает влияния (a noop - шо цэ такэ?). Акция может не иметь атрибутов param и value. |
value |
Значение, присваиваемое данному свойству. Этот атрибут может принимать выражение атрибута времени запроса в качестве значения. Акция может не иметь атрибутов param и value. |