OGNL is the Object Graph Navigation Language
1. struts2利用内建的OGNL表达式支持,大大加强了Struts2的数据访问功能,
XWork在原有的OGNL基础上,增加了对ValueStack的支持。
2.OGNL表达式可以直接生成一个集合(List ,Map)
2.1 直接生成List集合的语法为: {e1, e2, e3}
2.2 直接生成Map的语法为 #{key1:value1, key2:value2,....}
2.3 对于集合,OGNL提供了两个元素符: in , not in
in判定某个元素是否在指定的集合中, not in 判定某个元素是否不在指定的计划中
<s:if test="'foo' in {'foo','bar'}">
包含
</s:if>
<s:else>
不包含
</s:else>
访问值栈中元素: name =
<s:property value="username" />
, password=
<s:property value="pwd" />
<br />
访问值栈中对象的属性:
<s:property value="userInfo.name" />,
<s:property value="userInfo['name']" />,
<s:property value="userInfo[\"age\"]"/>
<br />
OGNL is the Object Graph Navigation Language
<br />
<s:property value="userInfo.dogs.size()"/><br/>
访问值栈中对象的方法:
<s:property value="userInfo.getName()" />
<br />
访问值栈中action的方法:直接写Action的方法名
<s:property value="sayHello()" />
<br />
首先配置:
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
<li>
访问静态方法:struts.ognl.allowStaticMethodAccess设为"true" <br/>
<s:property value="@com.pk.util.TimeHelper@getTime()" />
</li>
<li>
访问静态属性:
<s:property value="@com.pk.util.Constants@TITLE" />
</li>
<li>
访问Math类的静态方法:
<s:property value="@@random()" />
</li>
访问List:
<s:property value="userList" />
<br />
访问List中某个元素:
<s:property value="userList[2]" />
<br />
访问List中元素某个属性的集合:
<s:property value="userList.{age}" />
<br />
访问List中某个元素的属性:
<s:property value="userList[0].age" />
<br/>
List的大小:
<s:property value="userList.size()" /> -- <s:property value="userList.size" />
<hr />
访问Set:
<s:property value="userSet" />
<br />
无法访问Set中某个元素:
<s:property value="userSet[1]" />
<br />
Set的大小:
<s:property value="userSet.size()" /> -- <s:property value="userSet.size" />
<hr />
访问Map:
<s:property value="userMap" />
<br />
访问Map中某个元素:
<s:property value="userMap.obj1" />
---
<s:property value="userMap['obj1']" />
---
<s:property value="userMap[\"obj1\"]"/>
<br />
访问Map中所有的key:
<s:property value="userMap.keys" />
<br />
访问Map中所有的value:
<s:property value="userMap.values" />
<br />
Map的大小:
<s:property value="userMap.size()" />
---
<s:property value="userMap.size" />
访问ActionContext中的对象
<s:property value="#request.requestStr" />
<br />
访问ActionContext中的对象的方法
<s:property value="#session.userInfo.name" />
<hr/>
<s:select label="label" name="name" list="{'name1','name2','name3'}"
value="'name2'" /><br />
<s:select label="label" name="name"
list="#{'foo':'foovalue', 'bar':'barvalue'}" value="'bar'"/>