Struts2_学习笔记(七)----OGNL

来源:互联网 发布:win7网络位置怎么修改 编辑:程序博客网 时间:2024/05/22 10:46

对于domain model只有传入user.xxx时系统才会构造一个user对象,也可以手动构造,如果使用系统自动构造时,domain model 里面需要有参数为空的构造函数。

1、 访问Value Stack 中的普通属性和方法

属性:

<s:propertyvalue="user.age"/>

<s:propertyvalue="user['age']"/>

<s:propertyvalue="user[\"age\"]"/>   \”是转义字符

wrong: <s:property value="user[age]"/>

方法:

<s:propertyvalue="password.length()"/>

2、 访问普通类和Math类的静态方法、属性

例如:第一个@后面是类名,第二个@后面是方法或者属性名。

<s:propertyvalue="@com.bjsxt.struts2.ognl.S@s()"/>

调用Math类中的静态方法

<s:propertyvalue="@@max(2,3)"/>

3、 访问普通类的构造方法

<s:propertyvalue="new com.bjsxt.struts2.ognl.User(8)"/>

4、 访问集合(包括数组)

访问List:<s:propertyvalue="users"/>

访问List中某个元素:<s:propertyvalue="users[1]"/>

访问List中元素某个属性的集合:<s:propertyvalue="users.{age}"/>

访问List中元素某个属性的集合中的特定值:<s:propertyvalue="users.{age}[0]"/> |<s:propertyvalue="users[0].age"/>

访问Set:<s:propertyvalue="dogs"/>

访问Set中某个元素:<s:propertyvalue="dogs[1]"/>  不能这样取值!

访问Map:<s:propertyvalue="dogMap"/>

访问Map中某个元素:<s:propertyvalue="dogMap.dog101"/> |<s:propertyvalue="dogMap['dog101']"/> |<s:propertyvalue="dogMap[\"dog101\"]"/>

访问Map中所有的key:<s:propertyvalue="dogMap.keys"/>

访问Map中所有的value:<s:propertyvalue="dogMap.values"/>

访问容器的大小:<s:propertyvalue="dogMap.size()"/> |<s:propertyvalue="users.size"/>

5、 投影

?#取出所有符合条件的user,^#取出第一个符合条件的user,$#取出符合最后一个符合条件的user

<s:propertyvalue="users.{?#this.age==1}[0]"/>  age1的第一个元素

<s:propertyvalue="users.{^#this.age>1}.{age}"/>

<s:propertyvalue="users.{$#this.age>1}.{age}"/>

<s:propertyvalue="users.{$#this.age>1}.{age} == null"/>

6、 用“[ ]”访问元素

[ x ]:Value Stack中从第x个对象开始一直到栈底的集合。


原创粉丝点击