值栈(Value Stack Contents):
1.访问值栈中的普通属性和方法,在action中有get、set方法,
页面获取,普通的属性:<s:property value="act">
对象里的属性:<s:property value="user.userName">
注意:传对象参数的时候,首先对象必须保证有属性struts2才会自动的创建一个对象,否则需要自己new一个才能保证该对象的存在。
对象里对象的属性:<s:property value="cat.dog.name">
对象中的方法:<s:property value="user.getValue()">
普通的方法:<s:property value="m()">
在配置文件中设置:<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
访问类中的静态方法:<s:property value="@类名@方法名()">
访问类中的静态属性:<s:property value="@类名@属性名">
访问Math类的静态方法:<s:property value="@@max(2,3)">
访问普通的构造方法:<s:property value="new 构造方法(属性)">
2、访问集合
List、Array数组
访问List:<s:property value="userList">
访问List中的元素:<s:property value="userList[1]">
访问List中每个元素的相同属性:<s:property value="userList.{age}">得到的是所有元素的age组合成的集合
访问List中第一个元素的age:<s:property value="userList.{age}.[0]">
<s:property value="userList[0].age">
Set集合
访问Set:<s:property value="userSet">
访问Set中的对象:<s:property value="userSet[0]">【无法使用,因为set无须】
Map集合
访问Map:<s:property value="userMap">
访问Map的某个元素:<s:property value="userMap.key1">|<s:property value="userMap[‘key1‘]">|<s:property value="userMap[\"key1\"]">
访问Map中的所有key:<s:property value="userMap.keys">
访问Map中的所有value:<s:property value="userMap.vaule">
访问容器的大小:<s:property value="userMap.size()">|<s:property value="userMap.size">
3、投影(过滤)
?#满足表达式的所有的集合:<s:property value="userJiHe.{?#this.age==1}[0]">
^#满足表达式的第一个:<s:property value="userJiHe.{?#this.age==1}{age}">
$#满足表达式的最后一个:<s:property value="userJiHe.{?#this.age==1}{age}">
判断结合中的满足表达式的结合是否为空:
<s:property value="userJiHe.{?#this.age>1}.{age}==null">
4、值栈的访问
<s:property value="[i]"> 访问值栈中从第i一直到栈底
chain对于服务器端的Action跳转,值栈中会压入两个Action对象
原文地址:http://www.cnblogs.com/zhxh1022/p/zhxh.html