关于valueStack

onlysoymilk 2009-07-23
kyo100900 写道
我来说说我的看法,大家一起讨论讨论。

假设你家有很多电脑,比如:

笔记本(相当于request作用域)
台式机(相当于session作用域)
服务器(相当于application作用域)
.....(其它类似)

现在你的一个好朋友想用你的电脑看电影(从以上作用域中取数据),因为你们之间关系太熟了,他完全能分清哪些电影在哪些电脑上,因此,他可以这么取记录(注意,直接使用其它作用域要加上#)

<ww:property value="#session.mySessionPropKey"/> 
<ww:property value="#request['myRequestPropKey']"/> 
<ww:property value="#application.myApplicationPropKey"/>



但是一个新朋友如果也想看电影那就难办了,他就得不停的挨台机器的找啊,找啊。因此,这个ValueStack就相当于做这个工作。它持有所有作用域的引用,因为它可以通过栈的特性不断的查找,出栈,再查找,直到找到或栈为空为止。


<ww:property value="mPropKey"/> 


上面的代码对于程序员来说,并不用关心数据所在的作用域,它会依次在各个作用域中查找的。

如果不同作用域中有相同的数据名称(键值),这样一来使用<s:property value="xxx" />来取ValueStack中的数据不就有问题了么?它会去哪个作用域中的数据呢?还是说如果在不同作用域中出现相同的数据名称,它会默认获取那个作用域的Value?
请教!
dfx306956205 2009-09-15
kyo100900 写道
啊~~~~~~~~~~~~~~~~   
我不是女的。


呵呵,谁叫你弄个女孩子的头像~第一次我看到时候,我也以为你是个女的啊~哈哈
liupesnap 2009-10-02
kyo100900 写道
我来说说我的看法,大家一起讨论讨论。

假设你家有很多电脑,比如:

笔记本(相当于request作用域)
台式机(相当于session作用域)
服务器(相当于application作用域)
.....(其它类似)

现在你的一个好朋友想用你的电脑看电影(从以上作用域中取数据),因为你们之间关系太熟了,他完全能分清哪些电影在哪些电脑上,因此,他可以这么取记录(注意,直接使用其它作用域要加上#)

<ww:property value="#session.mySessionPropKey"/> 
<ww:property value="#request['myRequestPropKey']"/> 
<ww:property value="#application.myApplicationPropKey"/>



但是一个新朋友如果也想看电影那就难办了,他就得不停的挨台机器的找啊,找啊。因此,这个ValueStack就相当于做这个工作。它持有所有作用域的引用,因为它可以通过栈的特性不断的查找,出栈,再查找,直到找到或栈为空为止。


<ww:property value="mPropKey"/> 


上面的代码对于程序员来说,并不用关心数据所在的作用域,它会依次在各个作用域中查找的。









有点类似struts中寻找properties文件
xwood 2009-10-05
看完了这些讨论,我还有一个小疑问,就是这个ValueStack的生命周期到底是对应单个的action的复例还是整个应用或者单个用户的单例呢?
kulinglei 2009-10-26
xwood 写道
看完了这些讨论,我还有一个小疑问,就是这个ValueStack的生命周期到底是对应单个的action的复例还是整个应用或者单个用户的单例呢?

一个请求的生命周期
eimhee 2009-10-28
struts2的源码中是把valuestack设到request当中, 这样在jsp, tag中就可以从request中取出valuestack. 所以生命脉周期应该是一个request
Global site tag (gtag.js) - Google Analytics