最近一直在研究valueStack与ActionContent之间的区别
valueStack (值栈)是一个集合中的几个对象保持下列对象提供的顺序:值栈可以通过JSP,Velocity或者Freemarker的标签。有各种不同的标签在单独的章节中,我们将学习,用于获取和设置Struts 2.0 的值栈。 ValueStack的对象里面可以得到动作如下:
valueStack中的值可以在ActionContext.getContext().getValueStack获得,但是有一点可以描述简单关系的的图:
如果是值栈的话不用加上#号就可以获取值,但是有一点不是很好的地方就是:如果在action中有变量时候,要写该变量的get与set的方法才能隐形的将值放在valueStack中,一般的情况下面,会存在ActionContext的中的stack 中。如果想不加上#就取值,可以有下面的写法
这样的写法可以完成使用Ongl的功能把变量与数据push到valueStack中去,其实,Struts 2的值栈的顶部增加了动作时执行。所以,通常的方法是把东西值栈添加 getter/setter方法以使这些值在Action类,然后使用<s:property>标签来访问值。以下是展示如何在struts ActionContext 中 ValueStack 工作。至此的写法已完成了Ongl的功能的代码,把数据放在ValueStack中,完成前台代码的简洁性~