1. iterator标签
相当于jstl中的<c:Each>标签,循环遍历作用
在action中设置一个list集合,并且为其提供get方法,当访问该action时,这个list会自动存在ValueStack中,因为提供了get方法
其属性status有一些方法,比如是否为偶数是否为奇数
示例:
效果:
2. OGNL投影
使用过滤条件投影:
即给集合加一个过滤条件,筛选掉不满足条件的数据
?# | 过滤所有符合条件的集合 | list.{?#this.age>30} |
^# | 过滤第一个符合条件的集合 | list.{^#this.age>30} |
$# | 过滤最后一个符合条件的集合 | list.{$#this.age>30}
|
list中数据:
使用指定属性投影:
3. Struts各种符号的用处
3.1. #
- 取contextMap中key时使用,例如<s:property value="#name" />
- OGNL中创建Map对象时使用,例如:<s:radio list="#{'male':'男','female':'女'}" />
3.2. $
- 在JSP中使用EL表达式时使用,例如${name}
- 在xml配置文件中,编写OGNL表达式时使用,例如文件下载时,文件名编码。
struts.xml——>${@java.net.URLEncoder.encode(filename)}
3.3. %
在struts2中,有些标签的value属性取值就是一个OGNL表达式,例如<s:property value="OGNL Expression" />
还有一部分标签,value属性的取值就是普通字 符串,例如<s:textfield value="username"/>,如果想把一个普通的字符串强制看成时OGNL,就需要使用%{}把字符串套起来。
例如<s:textfield value="%{username}"/>。
当然在<s:property value="%{OGNL Expression}" />也可以使用,但不会这么用。
4. struts的其他标签:
s:set标签
其各个属性讲解
value | 存入contextMap中的值,是一个OGNL表达式 |
var | 存入contextMap中key |
scope | 存储的范围(session等) |
scope不写的话,默认存到contextMap和request中
这里面注意value中默认会当成ognl表达式,所以这里应该加上单引号
s:action
s:if s:elseif s:else
s:url s:a(很少用)
s:url
声明一个url路径,存在contextMap中,注意在这里面传参只能传递一个参数
s:a