Struts2中的值栈(ValueStack)

值栈是静态注入生成的,值栈有对象栈和map栈。

值栈示意图

从图可以看出,map栈分为两部分,图中map栈左边部分跟对象栈的内存结构一样。可以根据ActionContext.getContext().getValueStack().getRoot()访问对象栈,还可以通过ActionContext.getContext().getValueStack().getContext()访问。

值栈的生命周期:值栈的生命周期就是一次请求

值栈的数据结构:对象栈和map栈

对象栈和map栈的区别:对象栈是一个list,map栈是一个map

怎么样把数据放到map栈中:这个方法ActionContext.getContext().put("departmentList", departmentList);可以把departmentList放到map栈中。这个方法ServletActionContext.getRequest().setAttribute("departmentList", departmentList);把departmentList放到request中,在页面中通过#request.departmentList返回,这里要迭代list集合

怎么样把数据放到对象栈中:例如ActionContext.getContext().getValueStack().push(departmentList);ActionContext.getContext().getValueStack().getRoot().add(0,departmentList);这两个方法可以把departmentList放到对象栈栈顶;ActionContext.getContext().getValueStack().getRoot().add(departmentList);这个方法可以把departmentList放到对象栈栈底;ActionContext.getContext().getValueStack().peek();这个方法获取对象栈的栈顶元素;ActionContext.getContext().getValueStack().pop();这个方法移除对象栈的栈顶元素,也可以通过ActionContext.getContext().getValueStack().getRoot().remove(0);移除对象栈的栈顶元素

对象栈中的数据有什么特殊之处:

*****对象栈的说明:1.处于对象栈中的对象,它的属性是可以直接访问的。2.如果在对象栈中有相同名称的属性,那么从栈顶开始查找,直到找到为止。3.一般情况下回显的数据应该放在对象栈中,这样效率比较高。4.用Ognl表达式访问对象栈,直接属性名称就可以了,不用加#。

*****map栈的说明:1.request,session,application都在map栈中。2.可以把一个对象放到map中。3.Ognl表达式访问map栈中的内容:如果一个对象在map中,那么就是#request.对象的key值.属性; 如果一个对象直接放入到map中,那么就是#对象的key值.属性。注意:把一个对象放到map栈中,你是不能直接访问这个对象的属性的。

把一个map放到对象栈的栈顶:ActionContext.getContext().getValueStack().set(key,o);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ValueStack是一个接口,在struts2中使用OGNL(Object-Graph Navigation L...
    重山杨阅读 2,186评论 0 7
  • action中如何接受页面传过来的参数 第一种情况:(同名参数) 例如:通过页面要把id=1 name=tom a...
    清枫_小天阅读 3,292评论 1 22
  • 本文包括:1、OGNL 表达式概述(了解)2、值栈概述3、值栈的存值与取值4、EL 表达式也会获取到值栈中的数据5...
    廖少少阅读 1,317评论 0 14
  • 概述 什么是Struts2的框架Struts2是Struts1的下一代产品,是在 struts1和WebWork的...
    inke阅读 2,345评论 0 50
  • 值栈 ValueStack对象相当于一个栈,它贯穿整个Action的生命周期,每个Action类的对象实例都会拥有...
    FTOLsXD阅读 511评论 0 1

友情链接更多精彩内容