Struts 2控件标签示例教程

时间:2020-02-23 14:36:04  来源:igfitidea点击:

控制标签用于操作和导航集合中的数据。
一些重要的Struts 2控制标签是:

  • if-elseif-else标签:这些是用于结果页中条件逻辑的基本控制标签。
    elseif和else标签始终与if标签一起使用。
    if和elseif标记具有测试属性,我们可以其中提供应产生布尔值(真或者假)的表达式。
    用法示例是:
    else标签没有任何属性。

  • 迭代器标签:我们可以使用迭代器标签遍历对象集合。
    集合可以是数组,列表,地图等。
    迭代器标签提供了在具有状态属性的ActionContext中定义变量的选项。
    IteratorStatus提供迭代器的当前状态,并公开一些获取计数,奇数或者偶数,第一个或者最后一个元素等的方法。
    示例用法是:
    为了迭代地图,我们需要提供属性标签值作为键和值。

提供了其他控制标签以与迭代器一起使用。

  • append标签:此标签可用于附加多个列表,然后在迭代器中使用它们。
    要附加的列表带有param标签,并且列表是一个接一个地附加的。
    因此,第一个列表元素将首先由迭代器检索,然后第二个列表元素以此类推。
    用法示例是:

  • 合并标签:我们可以使用合并标签合并多个列表。
    所有列表中的第一个元素将首先合并,然后合并第二个元素,依此类推。
    我们可以使用如下所示的合并标签。

  • 排序标签:我们可以使用排序标签来获取排序列表。
    我们需要提供一个用于对列表进行排序的比较器。
    我们可以像下面这样使用它。

  • 子集标签:我们可以使用子集标签来获取迭代器的子集。
    我们需要提供一个Decider实现,子集标记将使用该实现来过滤元素,以决定是否将元素包括在迭代器中。
    我们可以像下面这样使用它。

  • 生成器标签:我们可以使用生成器标签根据给定的值创建一个迭代器。
    我们可以提供分隔符以对值使用定界符,还可以提供Converter实现将String转换为Object。
    我们可以像下面这样使用它。

让我们看看一个简单的struts 2项目中的控制标签。
我们的项目结构如下图所示。

配置文件

web.xml

<s:if test="expression">
//do something
</s:if>
<s:elseif test="expression">
//do something
</s:elseif>
<s:else>
//do something
</s:else>

pom.xml

<s:iterator value="list" status="itStatus">
  <s:property
</s:iterator>

struts.xml

<s:iterator value="map">
Key=<s:property value="key", Value=<s:property value="value"<br>
</s:iterator>

配置文件不言自明,用于配置示例的Struts2框架和操作配置。

Java Bean

<s:append var="myList">
	<s:param value="list1"></s:param>
	<s:param value="list2"></s:param>
</s:append>
<s:iterator value="#myList">
	<s:property
</s:iterator>

一个简单的Java bean类,将在Action类中使用它来设置一些值,然后在JSP页面中使用以展示struts2控制标签的用法。

比较器类

<s:merge var="myList">
	<s:param value="list1"></s:param>
	<s:param value="list2"></s:param>
</s:merge>
<s:iterator value="#myList">
	<s:property<br>
</s:iterator>

一个简单的Comparator实现,将在结果页排序标记示例中使用。
我们也可以使用Comparator对自定义对象列表进行排序,请在Java Comparator Example中阅读更多内容。

Action 类

<s:bean name="MyComparator" var="myComparator"></s:bean>
<s:sort comparator="#myComparator" source="list">
<s:iterator>
	<s:property<br>
</s:iterator>
</s:sort>

一个简单的操作类实现,我们其中填充要在结果页中使用的Employee bean变量。
需要注意的重要一点是getCountryDecider()方法,该方法将在结果页子集标记示例中使用以获得子集迭代器。

结果页面

home.jsp

<s:subset source="list" decider="myDecider">
<s:iterator>
<s:property<br>
</s:iterator>
</s:subset>

这是结果页面,我们其中使用Struts2控件标记来操纵数据和集合。
请仔细研究不同标签的用法,以更好地理解。