• 值栈(Structs2)


    1. 关于值栈:

    1). 登陆 时, ${userName} 读取 userName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的.

    2). ValueStack:

    I. 可以从 ActionContext 中获取值栈对象

    //1. 获取值栈
    ValueStack valueStack = ActionContext.getContext().getValueStack();
    //2. 创建 Test 对象, 并为其属性赋值
    Test object = new Test();
    object.setUserName("abc");
    object.setUserPsw("123");

    //3. 把 Test 对象压入到值栈的栈顶!
    valueStack.push(object);


    II. 值栈分为两个逻辑部分

    > Map 栈: 实际上是 OgnlContext 类型, 是个 Map, 也是对 ActionContext 的一个引用. 里边保存着各种 Map:
    requestMap, sessionMap, applicationMap, parametersMap, attr

    > 对象栈: 实际上是 CompoundRoot 类型, 是一个使用 ArrayList 定义的栈. 里边保存各种和当前 Action 实例相关的对象.
    是一个数据结构意义的栈.

    2. Struts2 利用 s:property 标签和 OGNL 表达式来读取值栈中的属性值

    1). 值栈中的属性值:

    > 对于对象栈: 对象栈中某一个对象的属性值

    > Map 栈: request, session, application 的一个属性值 或 一个请求参数的值.

    2). 读取对象栈中对象的属性:

    > 若想访问 Object Stack 里的某个对象的属性. 可以使用以下几种形式之一:

    object.propertyName ; object['propertyName'] ; object["propertyName"]

    > ObjectStack 里的对象可以通过一个从零开始的下标来引用. ObjectStack 里的栈顶对象可以用 [0] 来引用,
    它下面的那个对象可以用 [1] 引用.

    [0].message

    > [n] 的含义是从第 n 个开始搜索, 而不是只搜索第 n 个对象

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

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

    3). 默认情况下, Action 对象会被 Struts2 自动的放到值栈的栈顶.

  • 相关阅读:
    Maven 环境的配置
    zTree的简单例子
    plsql免安装客户端的配置
    HDU 1232 畅通工程
    HDU 5698 瞬间移动
    Codeforces 1015E1 Stars Drawing (Easy Edition)
    Codeforces 784B Santa Claus and Keyboard Check
    Codeforces 500C New Year Book Reading
    NSarray 赋值 拷贝 等问题记录
    UINavigationController 操作记录
  • 原文地址:https://www.cnblogs.com/hgc-bky/p/5738287.html
Copyright © 2020-2023  润新知