Struts 2 数据标签例题
在这个例子中我们将学习怎样使用property标签,set标签,push标签。这些标签是Struts 2的数据标签。之前我们已经了解到什么是动作上下文(ActionContent)和值栈(ValueStack)。
- 动作上下文(ActionContext)是一个全局存储区域。它保存着处理请求关联的所有数据。
- 动作上下文(ActionContext)是单线程的。这确保了Struts 2的动作(action)的线程安全。
- 值栈(ValueStack)是动作上下文(ActionContext)的一部分。Struts 2的动作(action)驻留在值栈(ValueStack)中。
Property标签
property标签被用来从值栈(ValueStack)或在动作上下文(ActionContext)中的其他对象,如application或seesion中取得对象。下面我们来看看如何使用property标签。
下面是AlbumInfoAction类:
下面是Artist类:
让我们来看看怎么在jsp页面通过property标签访问动作(action)类属性。以下是albumDetails.jsp页面的代码:
我们可以看到title是AlbumInfoAction的属性,所以可以直接访问它。但是name和bio是Artist类的属性,所以我们需要更深一步的访问,我们需要使用第二级OGNL表达式去访问它们。
Set标签
set标签被用来为属性值设置另外一个名称,可以帮助更快更方便的访问属性。当我们使用property标签访问artist的名字,需要更深一层的访问。取而代之,我们可以在动作上下文(ActionContext)中设置另外一个属性,并直接访问它。举例如下:
artistName和artisBio属性将被保存在动作上下文(ActionContext)中。引用它们的时候要用#objectName语法。
也可以将属性值保存到session中。
用同样的方法,也可以将属性值保存到动作上下文(ActionContext)中的其他对象里去。
Push标签
我们可以使用push标签向值栈(ValueStack)中保存值。这个值会在值栈(ValueStack)的最上端,所以可以代替深层引用使用一级OGNL表达式进行引用。代码如下:
源代码:下载
源代码 + lib:下载