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标签