美文网首页
struts2值栈

struts2值栈

作者: 泛空秋慕 | 来源:发表于2018-03-15 23:04 被阅读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)"/>
    

    相关文章

      网友评论

          本文标题:struts2值栈

          本文链接:https://www.haomeiwen.com/subject/wvxkqftx.html