0%

5.3.2 set标签

5.3.2 set标签

set标签的功能

利用set标签,可以完成以下工作:

  • 创建一个字符串和一个引用该字符串的有界变量。
  • 创建一个引用已存在的有界对象的有界变量。
  • 设置有界对象的属性。

如果用set创建有界变量,那么,在该标签出现后的整个JSP页面中都可以使用该变量。

set标签的形式

set标签的语法有4种形式。

形式1

第一种形式用于创建一个有界变量,并用value属性在其中定义一个要创建的字符串或者有界对象:

1
2
<c:set value="value" var="varName"
[scope="{page|request|session|application}"]/>

这里的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
2
3
<c:set var="varName" [scope="{page|request|session|application}"]>
body content
</c:set>

第二种形式允许在标签体body content中有JSP代码。

形式3

第三种形式用于设置有界对象的属性值。使用target属性定义有界对象,property属性指定要设置的属性名称。通过value属性设置有界对象的属性值:

1
<c:set target="target" property="propertyName" value="value"/>

例如,下面的set标签把有界对象addresscity属性赋值为Tokyo这个字符串:

1
<c:set target="${address}" property="city" value="Tokyo"/>

注意,必须在target属性中用一个EL表达式来引用这个有界对象

形式4

第四种形式与第三种形式相似,只是赋值是通过标签体body content来完成的:

1
2
3
<c:set target="target" property="propertyName">
body content
</c:set>

例如,下面的set标签是将字符串“Beijing”赋予有界对象addresscity属性:

1
<c:set target="${address}" property="city">Beijing</c:set>

set标签的属性说明

属性 类型 描述
value+ 对象 要创建的字符串,或者要引用的有界对象,或者新的属性值
var 字符串 要创建的有界变量
scope 字符串 新创建的有界变量的范围
target+ 对象 其属性要被赋新值的有界对象;这必须是一个JavaBeans实例或者java.util.Map对象
property+ 字符串 要被赋新值的属性名称

表中的加号表示该属性的属性值可以动态生成.

原文链接: 5.3.2 set标签