标签:
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.
标签:
原文地址:http://www.cnblogs.com/Crow00/p/4695929.html