Struts 2控件标签示例教程
控制标签用于操作和导航集合中的数据。
一些重要的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控件标记来操纵数据和集合。
请仔细研究不同标签的用法,以更好地理解。