struts2 lesson five struts2的OGNL导航,投影/选择,符号,值栈技术
OGNL导航:就是属性的级联:Person.user.name () OGNL 对应是jsp EL表达式
投影/选择:#this 当前的集合对象 ?:所有,^:第一个,$:最后一个
如jsp页面中<s:property value="students.{?#this.age>=30}"/> 意思就是得到这个students这个集合中所有age>=30的,后台students是一个集合.
<s:property value="students.{?#this.age>=30}.{name}" 意思就是得到这个students这个集合中所有age>=30的用户名,后台students是一个集合.
<s:property value="students.{?#this.age>=30}.{name[0]}" 意思就是得到这个students这个集合中所有age>=30的第一个用户名,后台students是一个集合.
<s:property value="students.{^#this.age>=30}.{name}" 意思就是得到这个students这个集合中所有age>=30的第一个用户名,但这里是一个集合,因为返回的是一个[] . 后台students是一个集合.
#符中用途
可以访问根对象:
如
#paramters eg:#paramters.id[0] request.getParameter["id"]
#request eg:#request.name request.getAttribute("name")
#session eg:#session.name session.getAttribute("name")
#application eg #application.name application.getAttribute("name")
attr 用于按request>session>application 顺序访问其属性(attribute) 而#attr.name 相当三个scope内read name的属性,直到找到为止。
用于选择和投影,
构造Map #{'foo1','bar1'};
struts2的值栈技术:
struts2为每一次的请求生成一个值栈,不同的请求对应不同的值栈。
struts2接收到一个action的请求,首先是实例化这个Action,并把这个对象送进值栈,此时ACTION中所有的属性都是默认值,然后再执行定义在这个方法上所有拦截器,最后执行action动作
构造方法----》拦截器----》动作方法
注意:拦截器可以改变属性的值,当改变一个属性值后,action类的相应属性的值就会变成在拦截器中最后改变的属性的这个值。
posted on 2013-05-12 09:05 peter.peng 阅读(232) 评论(0) 编辑 收藏 举报