一、OGNL表达式
访问Action的普通属性:
<s:property value="msg"/>
访问Action中对象的普通属性:<s:property value="user.name"/>
访问Action中对象的普通方法:
<s:property value="user.info()"/>
访问Action中普通方法:
<s:property value="actionMethod()"/>
访问静态方法:
<s:property value="@com.xilen.action.StaticCls@stcSay()"/>
访问静态属性:
<s:property value="@com.xilen.action.StaticCls@stcMsg"/>
访问Math类的静态方法:
<s:property value="@@max(2,3)"/>
访问Action中List|Set|Map:
<s:property value="userList"/>
访问容器的大小:
<s:property value="map.size()"/>
访问List中元素的某个属性的集合(如所有user的name):
<s:property value="userList.{name}"/>
访问List中的元素(对象)的某个属性的集合中的特定值:
<s:property value="userList.{name}[1]"/>
访问List中的某个元素:
<s:property value="userList[0]"/>
访问Map中所有的key:
<s:property value="map.keys"/>
访问Map中所有的value:
<s:property value="map.values"/>
访问指定的请求参数(注意:每一个请求参数都是一个数组):
<s:property value="#parameters.parm"/>
二、Struts2标签库
1、<s:property/>
一般格式:
<s:property value="" default="" escape=""/>
属性说明:
value:默认当OGNL表达式处理,如果只要其当作字符串需加单引号
defaulut:默认值,值当作字符串
escape:表示对于得到的的字符串是否解析为HTML,默认为true(不解析)
使用示例:
<!--获取ValueStack中的对象-->
<s:property value="user.name"/>
<!--获取StackContext中的对象-->
<s:property value="#request.id"/>
2、<s:if test=""/>、<s:elseif test=""/>和<s:else/>
<!-- 数值比较 -->
<s:if test="1<2"></s:if>
<!-- 字符串比较 -->
<s:if test="'abc'=='abc'"></s:if>
<!-- 获取parameters中的值做比较(注: #parameters.parm=='parm'不能实现比较) -->
<s:if test="#parameters.parm[0]=='parm'"></s:if>
<!-- 获取Action中的属性做比较 -->
<s:if test="user.name=='admin'"></s:if>
3、<s:iterator/>
一般格式:
<s:iterator value="userList" var="u" status="stat" >
属性说明:
value:OGNL表达式
var:将遍历的当前对象别名后放至StackContext中
status:当前遍历的信息,通过其可取得当前遍历的count(统计,始于1)、index(索引,始于0)、
even(是否偶数),odd(是否奇数)等
补:另有begin(开始)、end(结束)、step(步长)等
使用示例
<!-- 遍历普通List -->
<s:iterator value="list" status="stat" >
<s:property value="#stat.index"/> <!-- 当前索引 -->
<s:property value="#stat.odd"/> <!-- 是否为奇数次遍历 -->
<s:property /> <!-- 获取当前对象 -->
</s:iterator>
<!-- 遍历对象List -->
<s:iterator value="userList" var="user" status="stat" >
<s:property value="#user.name" /> <!-- 获取属性 -->
<s:property value="#user.name.toUpperCase()" /> <!-- 对属性添加处理 -->
</s:iterator>
<!-- 遍历Map -->
<s:iterator value="map" status="stat" >
<s:property /> <!-- 获取当前key=value -->
<s:property value="key" /> <!-- 获取当前key -->
<s:property value="value" /> <!-- 获取当前value -->
</s:iterator>
三、补充
1、使用标签库,jsp需添加:
<%@ taglib prefix="s" uri="/struts-tags" %>
2、要访问静态类,struts需配置:
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>