使用domain modal接收参数时,在struts2中,struts2会帮我们new一个domain modal对象,同时帮我们把domain modal对象的属性赋值。当不传参数时,struts2也不会帮我们new一个对象,这时我们可以自己new一个。如果domain modal没有参数为空的构造方法,那么struts2将不能帮我们new一个对象。
访问值栈中的action的普通属性:<br>
<!--
value后面的表达式是ognl表达式,property标签的value是一个Object类型,
struts2将自动转成ognl表达式,到值栈或者actionContext中取值。
-->
username=<s:property value="username"/><br/>
passwd=<s:property value="passwd"/><br>
访问值栈中的action的普通属性(get set):<br/>
username=<s:property value="user.username"/><br/>
passwd=<s:property value="user.passwd"/><br/>
catName=<s:property value="cat.catName"/><br/>
<!-- 类中包含类的访问,用.-->
dogName=<s:property value="cat.friend.name"/><br/>
访问值栈对象的普通方法:<br/>
passwd字符串的长度:<s:property value="passwd.length()"/><br/>
调用cat哭的方法:<s:property value="cat.cry()"/><br/>
调用action的普通方法:<BR/>
action的sayHello方法返回值:<s:property value="sayHello()"/><br/><hr>
访问静态的方法:<br/>
<!-- @类的全路径名@静态方法名 -->
静态方法:<s:property value="@com.xie.struts.ognl.StaticClass@staticString()"/><br/>
访问静态的属性:<br/>
<!-- @类的全路径名@静态属性 -->
静态属性:<s:property value="@com.xie.struts.ognl.StaticClass@ptr"/><br/>
访问Math类的静态方法:<br>
Math类的静态方法:<s:property value="@@max(10,15)"/><br>
<hr>
访问普通类的构造方法:<br>
访问user类的构造方法1:<s:property value="new com.xie.struts.ognl.modal.User(/"liu/",/"liu/")"/><br>
访问user类的构造方法2:<s:property value="new com.xie.struts.ognl.modal.User('liu','liu')"/><br>
<hr>
访问集合:<br>
1.访问list:<s:property value="users"/><br>
<!--
<s:property value="users[1].passwd"/>:取出users集合中索引为1的Object的passwd属性值
<s:property value="users.{passwd}[1]"/>:取出users集合中的所有passwd构成一个数组,然后取出索引为1的值。
-->
2.访问list集合中的某个元素:<s:property value="users[1].passwd"/>|||||<s:property value="users.{passwd}[1]"/><br>
3.访问list集合中某个属性的集合:<s:property value="users.{username}"/><br>
4.访问set集合:<s:property value="dogs"/><br>
5.访问set集合中的某个元素:<s:property value="dogs[1]"/><br>
6.访问Map集合:<s:property value="dogMap"/><br>
7.访问Map集合中的某个元素:<s:property value="dogMap.dog2"/>|||||<s:property value="dogMap['dog2']"/><br>
8.访问map集合的所有keys:<s:property value="dogMap.keys"/><br/>
9.访问map集合的所有values:<s:property value="dogMap.values"/><br>
10访问集合的size:<s:property value="dogMap.size()"/>|||||<s:property value="dogMap.size"/><br><hr>
投影(过滤):<br>
<!--过滤条件?#,^#,$#.struts2会循环拿出users集合中的对象,那么this代表每个对象的引用-->
1.投影:<s:property value="users.(?#this.username.equals(/"liu/")"/><br>
2.投影:<s:property value="users.(^#this.username.equals(/"liu/"){passwd}"/><br>
3.投影:<s:property value="users.($#this.username.equals(/"liu/"){passwd}"/><br>
4.投影:<s:property value="users.($#this.username.equals(/"liu/"){passwd}==null"/><br><br>
用[]访问值栈的元素:<br>
[]访问ognl栈的ation的位置:<s:property value="[0]"/><br>
<hr>
查看值栈的属性:<s:debug></s:debug><br/>
本文详细介绍了Struts2框架中OGNL表达式的使用方法,包括如何通过OGNL访问Action的各种属性、调用方法及构造函数,以及如何操作集合等复杂数据结构。

490

被折叠的 条评论
为什么被折叠?



