5.3.2 set标签
set标签的功能
利用set标签,可以完成以下工作:
- 创建一个字符串和一个引用该字符串的有界变量。
- 创建一个引用已存在的有界对象的有界变量。
- 设置有界对象的属性。
如果用set创建有界变量,那么,在该标签出现后的整个JSP页面中都可以使用该变量。
set标签的形式
set标签的语法有4种形式。
形式1
第一种形式用于创建一个有界变量,并用value属性在其中定义一个要创建的字符串或者有界对象:
1 | <c:set value="value" var="varName" |
这里的scope属性指定了有界变量的范围。默认为page。
例如,下面的set标签创建了字符串“Hello World”,并将它赋给新创建的页面范围变量hello:
1 | <c:set value="Hello World" var="hello"/> |
下面的set标签则创建了一个名为job的有界变量,它引用请求范围中position所引用的对象。变量job的范围为page:
1 | <c:set var="job" value="${requestScope.position}" scope="page"/> |
有界对象本身并非保存在HttpServletRequest之中,requestScope.position只是该对象的引用,上面的set标签,将在页面范围创建一个名为job的有界变量,该有界变量是requestScope.position的一个副本,这两者都引用同一个对象.
形式2
第二种形式与第一种形式相似,只是把创建的字符串或者要引用的有界对象放在标签体(body content)中而已.
1 | <c:set var="varName" [scope="{page|request|session|application}"]> |
第二种形式允许在标签体body content中有JSP代码。
形式3
第三种形式用于设置有界对象的属性值。使用target属性定义有界对象,property属性指定要设置的属性名称。通过value属性设置有界对象的属性值:
1 | <c:set target="target" property="propertyName" value="value"/> |
例如,下面的set标签把有界对象address的city属性赋值为Tokyo这个字符串:
1 | <c:set target="${address}" property="city" value="Tokyo"/> |
注意,必须在target属性中用一个EL表达式来引用这个有界对象。
形式4
第四种形式与第三种形式相似,只是赋值是通过标签体body content来完成的:
1 | <c:set target="target" property="propertyName"> |
例如,下面的set标签是将字符串“Beijing”赋予有界对象address的city属性:
1 | <c:set target="${address}" property="city">Beijing</c:set> |
set标签的属性说明
| 属性 | 类型 | 描述 |
|---|---|---|
value+ |
对象 | 要创建的字符串,或者要引用的有界对象,或者新的属性值 |
var |
字符串 | 要创建的有界变量 |
scope |
字符串 | 新创建的有界变量的范围 |
target+ |
对象 | 其属性要被赋新值的有界对象;这必须是一个JavaBeans实例或者java.util.Map对象 |
property+ |
字符串 | 要被赋新值的属性名称 |
表中的加号表示该属性的属性值可以动态生成.
原文链接: 5.3.2 set标签