ActionContext和OGNL

使用struts2时,我们一般使用ognl表达式将表单字段绑定到对象中的具体属性。已知对象一般被放在一个叫做valuestack的对象上,并且ognl表达式指向这个栈上的属性。实际上,ognl表达式可以根据任何一系列对象求值,而ValueStack只是这些对象中的一个,即默认的那个。

         

            这一系列的可以让ognl表达式取值的对象,叫做ActionContext,struts2幕后一个非常重要的角色。它包含有默认的ValueStack对象,paramters对象,application对象,session对象,attr对象和request对象,而其中最重要最常用的也就是Valuestack对象,所以设计者将它设置为默认取值对象。

 

           假使ActionContext中存在着一个user的对象,若是默认存在于ValueStack中的话,我们用jsp的标签${}去取值,即${user};假使用struts的%转义字符去取值,即%{user}。这是默认的,假如它存在于session中,那么你该使用#session['user']去取值,#操作符会主动命名ActionContext中的session对象,即拿到session的对象,再去取值它下面的user的值。

 

            回到默认的ValueStack对象,它只有一个微妙的地方,当ognl表达式根据Valuestack解析时,它装作一个对象。这个虚拟对象包含了放在上面的所有对象的所有属性。如果相同的属性多次出现且无层次,主次分别的话,栈下面的对象的属性会被栈上层的同名同级属性覆盖,而valuestack正是压入式的存放的对象属性的。

 

            ognl使用%而不是$,虽然这看起来让很多jsp老手时常感到困惑,但是值得放心的是所属的ognl的%转义字符并不是常常用到,由于标签的智能默认行为,jsp标签的$和ognl的%通常是可以统一的,而#操作符,则更好理解,你可以把它跟$和%区分开,单独理解为,它是定位符,定位到Actioncontext中的6个对象中的某一个进而重命名,以获取存放在里面的对象属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值