十九、利用OGNL获取ValueStack中:根栈和contextMap中的数据

  1. 利用OGNL获取ValueStack中:根栈和contextMap中的数据

    原则:OGNL表达式如果以#开头,访问的contextMap中的数据

    如果不以#开头,是访问的根栈中的对象的属性(List集合)

    1、在动作类中

    public String execute() {

            // 操作ValueStack

            // 从当前线程中获取ActionContext对象

            ActionContext ac = ActionContext.getContext();

            // 获取值栈对象,它由两部分组成。第一部分:集合;第二部分:就是ActionContext中的那个Map

            ValueStack vs = ac.getValueStack();

            // 向根栈的栈顶中放一个Map。如果Map存在,直接取出来用,不存在,则创建一个Map,把p=vsp塞进去

            vs.set("p", "vsp");

     

            // 往传统的三大域范围放东西

            // request

            ServletActionContext.getRequest().setAttribute("p", "rp");

            // session

            ServletActionContext.getRequest().getSession().setAttribute("p", "sp");

            // application

            ServletActionContext.getServletContext().setAttribute("p", "AP");

     

            return SUCCESS;

     

        }

     

    2、数据内存结构

     

     

    3在JSP页面中

    <br/> ----显示根栈中的数据----<br/>

        <!-- 从栈顶往下搜索Mapkey或者是对象的属性 -->

        <s:property value="p"/><br/>

        <!--不是栈顶对象:从索引为0的元素开始砍出来之后的那个新集合 -->

        <s:property value="[0]"/><br/>

        <!--取栈顶的那个对象 -->

        <s:property value="[0].top"/><br/>

        

        <br/> ----显示contextMap中的数据----<br/>

        <s:property value="#request.p"/>

        <s:property value="#session.p"/>

        <s:property value="#application.p"/>

     

posted @ 2016-09-19 20:18  runningto  阅读(826)  评论(0编辑  收藏  举报