首页 > 代码库 > OGNL表达式

OGNL表达式


值栈(Value Stack Contents):
1.访问值栈中的普通属性和方法,在action中有get、set方法,
 页面获取,普通的属性:<s:property value="http://www.mamicode.com/act">
 对象里的属性:<s:property value="http://www.mamicode.com/user.userName">
 注意:传对象参数的时候,首先对象必须保证有属性struts2才会自动的创建一个对象,否则需要自己new一个才能保证该对象的存在。
 对象里对象的属性:<s:property value="http://www.mamicode.com/cat.dog.name">
 对象中的方法:<s:property value="http://www.mamicode.com/user.getValue()">
 普通的方法:<s:property value="http://www.mamicode.com/m()">


    在配置文件中设置:<constant name="struts.ognl.allowStaticMethodAccess" value="http://www.mamicode.com/true"></constant>
 访问类中的静态方法:<s:property value="http://www.mamicode.com/@类名@方法名()">
 访问类中的静态属性:<s:property value="http://www.mamicode.com/@类名@属性名">
 访问Math类的静态方法:<s:property value="http://www.mamicode.com/@@max(2,3)">

 访问普通的构造方法:<s:property value="http://www.mamicode.com/new 构造方法(属性)">

2、访问集合
  List、Array数组
 访问List:<s:property value="http://www.mamicode.com/userList">
 访问List中的元素:<s:property value="http://www.mamicode.com/userList[1]">
 访问List中每个元素的相同属性:<s:property value="http://www.mamicode.com/userList.{age}">得到的是所有元素的age组合成的集合
 访问List中第一个元素的age:<s:property value="http://www.mamicode.com/userList.{age}.[0]">
    <s:property value="http://www.mamicode.com/userList[0].age">
  Set集合
 访问Set:<s:property value="http://www.mamicode.com/userSet">
 访问Set中的对象:<s:property value="http://www.mamicode.com/userSet[0]">【无法使用,因为set无须】
  Map集合
 访问Map:<s:property value="http://www.mamicode.com/userMap">
   访问Map的某个元素:<s:property value="http://www.mamicode.com/userMap.key1">|<s:property value="http://www.mamicode.com/userMap[‘key1‘]">|<s:property value="http://www.mamicode.com/userMap[/"key1\"]">
 访问Map中的所有key:<s:property value="http://www.mamicode.com/userMap.keys">
 访问Map中的所有value:<s:property value="http://www.mamicode.com/userMap.vaule">
 访问容器的大小:<s:property value="http://www.mamicode.com/userMap.size()">|<s:property value="http://www.mamicode.com/userMap.size">

3、投影(过滤)
 
  ?#满足表达式的所有的集合:<s:property value="http://www.mamicode.com/userJiHe.{?#this.age==1}[0]">
  ^#满足表达式的第一个:<s:property value="http://www.mamicode.com/userJiHe.{?#this.age==1}{age}">
  $#满足表达式的最后一个:<s:property value="http://www.mamicode.com/userJiHe.{?#this.age==1}{age}">
  判断结合中的满足表达式的结合是否为空:
  <s:property value="http://www.mamicode.com/userJiHe.{?#this.age>1}.{age}==null">

4、值栈的访问
 <s:property value="http://www.mamicode.com/[i]"> 访问值栈中从第i一直到栈底
 
 chain对于服务器端的Action跳转,值栈中会压入两个Action对象