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编辑  收藏  举报