• 十九、利用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"/>

       

  • 相关阅读:
    Redis源代码分析(十三)--- redis-benchmark性能測试
    kvm中运行kvm
    umount.nfs device busy day virsh extend diskSpace, attachDisk
    ultravnc
    openNebula dubug
    maintenance ShellScripts
    virsh VMI deploy data serial xml
    cloud computing platform,virtual authentication encryption
    基于C 的libvirt 接口调用
    storage theory
  • 原文地址:https://www.cnblogs.com/Prozhu/p/5886507.html
Copyright © 2020-2023  润新知