Struts 2 数据标签教程

时间:2021-04-16 22:02:36

Struts 2 数据标签例题

 

在这个例子中我们将学习怎样使用property标签,set标签,push标签。这些标签是Struts 2的数据标签。之前我们已经了解到什么是动作上下文(ActionContent)和值栈(ValueStack)。

Struts 2 数据标签教程

  • 动作上下文(ActionContext)是一个全局存储区域。它保存着处理请求关联的所有数据。
  • 动作上下文(ActionContext)是单线程的。这确保了Struts 2的动作(action)的线程安全。
  • 值栈(ValueStack)是动作上下文(ActionContext)的一部分。Struts 2的动作(action)驻留在值栈(ValueStack)中。

Property标签

property标签被用来从值栈(ValueStack)或在动作上下文(ActionContext)中的其他对象,如application或seesion中取得对象。下面我们来看看如何使用property标签。

Struts 2 数据标签教程

 

下面是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:下载