struts2中ognl(Object Graph Navigation Laguage)的使用
一,访问普通的属性和方法
1,访问值栈中的action的普通属性值
<s:property value="name"/>
2,访问值栈中对象的普通属性(get set方法)
user.xxx只有传,才会构造,
想初始化domain model,
可以自己new,User=new User();Use u = new User(9);
也可以传参数值,?user.age=9
但这时候需要保持参数为空的构造方法public User(){......}
<s:propery value="user.age"/>
3,访问值栈中对象的普通方法 password.length()
4,访问值栈中对象的普通方法 cat.miaomaio()
5,访问值栈中action的普通方法 m()
二,访问静态的属性和方法
1,访问静态的属性
@类名.@属性
2,访问静态的方法
@类名.@方法名
3,访问Math类的静态方法:
<s:property value="@@max(2,3)" />
三,访问普通类的构造方法:
访问普通类的构造方法:<s:property value="new com.struts2.ognl.dao.User(8)"/>
四,访问集合类
访问List:<s:property value="users"/><br/>
访问List中某个元素:<s:property value="users[1]"/><br/>
访问List中元素某个属性的集合:<s:property value="users.{name}"/><br/>
访问List中元素某个属性的集合中的特定值:
<s:property value="users.{name}[0]"/> | <s:property value="users[0].name"/><br/>
访问Set:<s:property value="dogs"/><br/>
访问Set中某个元素:<s:property value="dogs[1]"/><br/>
访问Map:<s:property value="dogMap"/><br/>
访问Map中某个元素:<s:property value="dogMap.dog101"/> | <s:property value="dogMap['dog101']"/> | <s:property value="dogMap[\"dog101\"]"/><br/>
访问Map中所有的key:<s:property value="dogMap.keys"/><br/>
访问Map中所有的value:<s:property value="dogMap.values"/><br/>
访问容器的大小:<s:property value="dogMap.size()"/> | <s:property value="users.size"/> <br/>
五,投影(过滤)
投影(过滤):<s:property value="users.{?#this.age==1}[0]"/>
投影:<s:property value="users.{^#this.age>1}.{age}"/>
投影:<s:property value="users.{$#this.age>1}.{age}"/>
投影:<s:property value="users.{$#this.age>1}.{age} == null"/>
六,通过[]访问
[]:<s:property value="[0]"/><br/>
<s:property value="[0].user.name"/>