1. 关于值栈:

  • 1). helloWorld 时, ${productName} 读取 productName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的.
  • 2). ValueStack:

I. 可以从 ActionContext 中获取值栈对象
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 自动的放到值栈的栈顶.

注意:在使用s:debug标签时,需要设置constant

<constant name="struts.devMode" value="false" />

否则页面上将看不到[Debug]

最新文章

  1. 把Sharepoint Desinger 工作流部署到生产环境
  2. 微信JS SDK Demo 官方案例[转]
  3. C#.Net Mvc运营监控,计算方法/接口/action/页面执行时间
  4. JavaScript事件类型
  5. Git初使用
  6. linux cd
  7. 统计 p-value 含义
  8. 【微信公众号】将微信公众号消息里的FromUserName即OpenID转成UnionID
  9. skin++ 终极破解之法
  10. smartforms初始化
  11. 微信小程序大全(下)(最新整理 建议收藏)
  12. [物理学与PDEs]第1章习题5 偶极子的电场强度
  13. VUE路由去除#问题
  14. 再谈vim中多窗口的编辑 ctrl+w+H窗口位置最大化和互换等操作
  15. spring boot 多数据源分布式事务处理
  16. libevent源码剖析
  17. HDU 2639(01背包求第K大值)
  18. Centos下输入法全角半角转换
  19. DTO和ViewModel的区别
  20. HTTP要点概述:三,客户端和服务器,请求和响应

热门文章

  1. c3p0;jdbc;dbcp;mybatis;ubutils;
  2. Brain Network (easy)(并查集水题)
  3. 开启貌似已经过时很久的新坑:SharePoint服务器端对象模型
  4. 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群
  5. 使用PLSQL客户端导入导出数据库
  6. 九度OJ 1254:N皇后问题 (N皇后问题、递归、回溯)
  7. python 捕获异常详细信息
  8. python 学习2:生成器,迭代器,装饰器
  9. vim 光标的移动和跳转文件的位置
  10. Python:笔记(1)——基础语法