struts2值栈

2018-03-15  本文已影响0人  泛空秋慕

1.对象栈(root栈)

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

      (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 自动的放到值栈的栈顶. 

2.Map栈。

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

从map栈中取值可以使用EL表达式,也可以使用struts2定义的标签来访问Map栈中的数据:
productName:    ${sessionScope.product.productName}
productName1:  <s:property value="#session.product.productName" />

使用OGNL表达式还可以调用:
  -任何一个Java类中的静态字段和方法;
  -压入ValueStack栈的对象的公共字段和方法

·struts2默认情况下不允许调用任意Java类的静态方法,需要重新设置struts.ognl.allowStaticMethodAccess标记常量的值为true.

调用静态字段或方法需要使用如下的语法:
      -@java.util.Calendar@DeCEMBER
              <s:property value="@java.lang.Math@PI"/>
      -@app4.Util@now()
               <s:property value="@java.lang.Math@cos(0)"/>
上一篇下一篇

猜你喜欢

热点阅读