关于struts的valuestack的几点思考

来源:互联网 发布:淘宝客佣金谁给的 编辑:程序博客网 时间:2024/06/09 23:26

1.一个action请求对应一个valuestack;


2.valuestack对象的内部有两个逻辑部分,1)objecStack(对象栈):struts把Action和相关对象压入objectstack中;2)contextstackMap(map栈):struts

把各种映射关系(一些map对象)压入其中,实际上是actioncontext的引用


3.struts会把例如:parameters(该map中包含了当前请求的参数);request(该map中包含当前request对象中的所有属性);session(该map中包含了当前session对象的所有属性);application(该map中包含了当前application对象中的所有属性);attr:(该map中包含按如下顺序检索某个属性request-session-application).


4.利用s:property 标签和OGNL来访问valuestack里的对象属性

1)值栈中的属性值,对象栈:对象栈中某个对象的属性值 ;map栈:request/sessioin/application的一个属性值或者一个请求参数值;


2)读取objectstack中的属性值:可是使用object.propertyName ;

objectstack里的对象可以通过一个从0开始的下标来引用,它下面的那个对象可以用[1]引用。如果希望返回栈顶对象的message属性,则可以用[0].message;

若在指定的对象里没有搜索到指定的属性,则到指定对象的下个对象里继续搜索,[n]的含义是从第n个开始搜索,而不是只搜索第n个对象;

若从栈顶开始搜索,则可以省略下标部分:message;

结合s:property 标签<s:property value="[0].message"/>  <s:property value="message"/>





0 0