Struts2_struts标签&OGNL使用

1. iterator标签

相当于jstl中的<c:Each>标签,循环遍历作用

在action中设置一个list集合,并且为其提供get方法,当访问该action时,这个list会自动存在ValueStack中,因为提供了get方法

Struts2_struts标签&OGNL使用

Struts2_struts标签&OGNL使用

Struts2_struts标签&OGNL使用 

其属性status有一些方法,比如是否为偶数是否为奇数

示例:

Struts2_struts标签&OGNL使用

效果:

Struts2_struts标签&OGNL使用

 2. OGNL投影

使用过滤条件投影:

即给集合加一个过滤条件,筛选掉不满足条件的数据

?# 过滤所有符合条件的集合
list.{?#this.age>30}
^# 过滤第一个符合条件的集合
list.{^#this.age>30}
$# 过滤最后一个符合条件的集合
list.{$#this.age>30}

 

 list中数据:

Struts2_struts标签&OGNL使用

Struts2_struts标签&OGNL使用

Struts2_struts标签&OGNL使用

Struts2_struts标签&OGNL使用

Struts2_struts标签&OGNL使用

Struts2_struts标签&OGNL使用

 

Struts2_struts标签&OGNL使用

使用指定属性投影:

Struts2_struts标签&OGNL使用

 

Struts2_struts标签&OGNL使用

3. Struts各种符号的用处

3.1.  #

  1. 取contextMap中key时使用,例如<s:property value="#name" />
  2. OGNL中创建Map对象时使用,例如:<s:radio list="#{'male':'男','female':'女'}" />

3.2.  $

  1. 在JSP中使用EL表达式时使用,例如${name}
  2. 在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中

Struts2_struts标签&OGNL使用

这里面注意value中默认会当成ognl表达式,所以这里应该加上单引号

Struts2_struts标签&OGNL使用

s:action

Struts2_struts标签&OGNL使用

Struts2_struts标签&OGNL使用

s:if s:elseif s:else

 

s:url    s:a(很少用)

s:url

声明一个url路径,存在contextMap中,注意在这里面传参只能传递一个参数

Struts2_struts标签&OGNL使用

 

 

s:a

Struts2_struts标签&OGNL使用