理解WW的ValueStack

本文解析了WebWork框架中的ValueStack概念及其工作原理。详细介绍了Action与自定义Bean在ValueStack中的位置,并解释了如何通过OGNL表达式访问这些对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

跟着《Webwork in Action》学到了OGNL,一直对ValueStack的概念很模糊,而书里也没有介绍清楚,我一直以来连ValueStack里Action是在栈顶呢还是在哪里一层都不清楚,怎么把一个自定义的对上push到ValueStack上,如果在action的execute中push,他是在栈顶呢,还是次于Action呢?

其实在WW中,ValueStack的栈结构是这样的,在执行Action之前把Action压入栈,这时 Action就是栈顶,然后在Action.execute()时再把自定义的bean压入栈,那么这时这个自定义的bean就在栈顶了。所以在下面这样的JSP代码中,是先从自定义bean查起,然后才到Action。
<ww:property value="name" />

在ActionContext上下文中,默认是从OgnlValueStack去查找,因为这样,所以在在查找OgnlValueStack的值时是不用#来标明它所在的值栈。而像Session和Application这样的Map,则需要前缀,像这样:#session.xxx,#application.xxx。

至于怎么在ActionContext中添加类似于Session的Map,只有一个方法就是调用put方法。

讲得很粗略,不过内里已经了清楚了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值