码迷,mamicode.com
首页 > 其他好文 > 详细

ValueStack

时间:2015-08-02 16:44:17      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

1.什么是ValueStack

  ValueStack是Struts2中,Action向页面传递数据的媒介。

  ValueStack封装了Action的数据,并允许JSP通过OGNL来对其进行访问

2.访问ValueStack

  1.通过debug标签观察其结构。

    debug标签

      用于观察ValueStack结构,仅供程序员进行调试。

      <s:debug/>

  2.输出栈顶

    直接输出栈顶

      <s:property/>

      看输出的内容,是否与通过debug标签观察到的一致

  3.访问Context对象

    输出Context对象数据

      OGNL表达式以“#”开头。

      以key来访问context对象的值

      即通过OGNL表达式"#key",得到context中某属性的值

  4.迭代集合

    语法

      <s:iterator value="users">

        <s:property value="userName"/>

      </s:iterator>

    解释:

      users是OGNL表达式,自顶向下访问ValueStack栈中root对象的users属性,这里会从栈顶的Action对象取到该集合属性(List<User> users)值

      在循环过程中,循环变量User会被压入栈顶,此时Action被压到栈的第二位

      userName是OGNL表达式,自顶向下访问ValueStack栈中root对象的userName属性,这里会从栈顶的User对象取到userName属性值

  5.按数字迭代

    语法

      <s:iterator begin="from" end="to" var="k">

        <s:property value="#k"/>

      </s:iterator>

    解释

      from/to是ONGL表达式,自顶向下访问ValueStack栈中root对象的from/to属性,这里会从栈顶的Action对象取到属性(int from=1,to=3)值

      在循环过程中循环变量会被压入栈顶,此时Action被压到栈的第二位

      我们不能以数字做root对象,因此无法写OGNL访问栈顶的整数,此时可以声明循环变量k,该声明会将循环变量加入context对象中,如k=2

      此时,我们可以写#k这样的OGNL表达式来访问context对象,从而得到循环变量的值

      其实,我们也可以不写OGNL表达式,而是直接输出栈顶的值,即<s:property/>

  6.

ValueStack

标签:

原文地址:http://www.cnblogs.com/Crow00/p/4695929.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!