关于Ognl表达式,以及ValueStack值栈

1.OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言
2.OgnlContext事实上是一个Map集合
------------OgnlContext=根对象(1)+非根对象(N)
------------>非根对象要通过"#key"访问,根对象可以省略"#key"
注:在ActionConext中,有五大常用对象:Application,Session,Request,ValueStack,Prameters,其中只有ValueStack为根对象,所以如果在访问ValueStack中的东西,Ognl表达式前不用加#,可是如果不是在ValueStack中取值就要加#
3.关于
(a)ognl访问值栈的属性:<s:property value=“user_name”/>(直接通过属性名访问,无需加#)

(b)ognl访问值栈中action中的对象的属性:<s:property value=“user.user_name”/>(必须要有相应的set,get方法)

©ognl访问值栈中action中的对象的普通方法:<s:property value=“user.getUser_name()”/>(如果方法返回类型为void 无返回,则为null,如果有返回,则访问返回值)

(d)ognl访问值栈中action的方法:<s:property value=“getUser_name()”/>

(e)ognl访问值栈中action中的对象的静态方法:<s:property value="@com.zking.entity.User@toString()"/>
第一个@前放的是类全名,第二个,@前放的是方法名

(f)ognl访问类的静态属性:<s:property value="@com.zking.entity.User@user_name"/>

4.关于ValueStack值栈
-------------------------------------------------------------------------------------------------------------------=
生命周期:ValueStack贯穿整个Action的生命周期,保存在request域中,所以ValueStack的
生命周期和request的生命周期是一样的。当Struts2接受一个请求时,会迅速创建 ActionContext、Action、ValueStack,然后把Action存放进ValueStack中,所以Action的实例变量可以被OGNL表达式访问。请求来的时候,Action、ValueStack的生命周期开 始,请求结束时,Action、ValueStack的生命周期结束。
本部分来自 lxizh11 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/lxizh11/article/details/10330513?utm_source=copy

--------------------------------------------------------------------------------------------------------------------=
4.1特点:
- 把一个对象放入ValueStack之后,是无法拿到这个对象的,但是我们可以直接拿到这个属性以及属性值
- 当我们要把值传到页面时,应该应该把 值放入一个对象的属性当中这样就可以通过这个对象在页面上去到值了
-

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值