在说明s:iterator标签的使用前,先了解下struts2中的Value Stack。这里参考了webwork中对Value Stack的描述,由于struts2是在webwork的基础上进行升级的,因此webwork对于Value Stack的表述同样适用于struts2。在这里不描述Value Stack具体做什么,但有两点需要注意:
一个value stack本质上是一个List;
在栈中调用[n]将返回一个从位置n开始的子栈;
对于2举个例子说明。假定Value Stack包含了[model,action,others],那么
[0] --- 返回 [model,action,others];
[1] --- 返回 [action,others];
[2] --- 返回 [others];
现在将开始介绍s:iterator的一些使用。以下代码片段均在开发环境eclipse3.4 wtp、tomcat5.5、jdk5上使用struts2.1.6测试通过。
1) 、访问 days
defined List<String> days ["Monday","Thursday","Friday","Sunday"]
view plaincopy to clipboardprint?
<s:iterator value="days"><s:property /></s:iterator>
<s:iterator value="days"><s:property /></s:iterator>
2) 、使用 top 关键字使用(过滤掉Monday)
defined List<String> days ["Monday","Thursday","Friday","Sunday"]
view plaincopy to clipboardprint?
<s:iterator value="days">
<s:if test="top!='Monday'">
<s:property />
</s:if>
</s:iterator>
<s:iterator value="days">
<s:if test="top!='Monday'">
<s:property />
</s:if>
</s:iterator>
top 指代当前迭代元素,可以为对象;
这里的top可用[0].top替代,但不能使用[0]。[0]代表整个栈对象。如果单纯调用[0]将会调用其toString()方法输出对象信息;
3)、使用 last / first 关键字使用
defined String[][] aTs = { { "一", "二", "三", "四" },{ "一一", "二二", "三三", "四四"} };
view plaincopy to clipboardprint?
<!--遍历二维数组,The trick here is to use 'top' as the value for the inner iterator-->
<s:iterator value="aTs" status="of">
<s:if test="#of.last"><br/></s:if>
<s:iterator value="top">
<!--亦可用[0].top替代。如果单纯用[0],则会同时打印该处栈对象信息-->
<s:property />
</s:iterator>
</s:iterator>
<!--遍历二维数组,The trick here is to use 'top' as the value for the inner iterator-->
<s:iterator value="aTs" status="of">
<s:if test="#of.last"><br/></s:if>
<s:iterator value="top">
<!--亦可用[0].top替代。如果单纯用[0],则会同时打印该处栈对象信息-->
<s:property />
</s:iterator>
</s:iterator>
iterator 标签中的status属性代表当前迭代的位置;
#of.last用于判断当前是否跌到的最后一个元素;
last返回一个boolean类型;
first 返回一个boolean类型;
4)、使用 odd / even 关键字
下面的例子要实现每行输出颜色不同的效果。
defined List<String> days ["Monday","Thursday","Friday","Sunday"]
view plaincopy to clipboardprint?
<!--奇数行显示为红色,偶数行显示为绿色-->
<s:iterator value="days" status="offset">
<s:else>
<s:if test="#offset.odd==true">
<li style="color: red" mce_style="color: red"><s:property /></li>
</s:if>
<s:else>
<li><s:property /></li>
</s:else>
</s:else>
</s:iterator>
<!--奇数行显示为红色,偶数行显示为绿色-->
<s:iterator value="days" status="offset">
<s:else>
<s:if test="#offset.odd==true">
<li style="color: red" mce_style="color: red"><s:property /></li>
</s:if>
<s:else>
<li><s:property /></li>
</s:else>
</s:else>
</s:iterator>
odd关键字用来判断当前迭代位置是否为奇数行。odd返回boolean类型;
evne关键字用来判断当前迭代位置是否为偶数行。even返回boolean类型
5)、总结下,当声明iterator的status属性时,通过#statusName.method 可以使用以下方法:
even : boolean - 如果当前迭代位置是偶数返回true
odd : boolean - 如果当前迭代位置是奇数返回true
count : int - 返回当前迭代位置的计数(从1开始)
index : int - 返回当前迭代位置的编号(从0开始)
first : boolean - 如果当前迭代位置是第一位时返回true
last : boolean - 如果当前迭代位置是最后一位时返回true
modulus(operand : int) : int - 返回当前计数(从1开始)与指定操作数的模数
6)、最后再来看下在iterator中调用value stack的用法。
假定countries是一个List对象,每一个country有一个name属性和一个citys List对象,并且每一个city也有一个name属性 。那么我们想要在迭代cities是访问countries的name属性就的用如下方式:
view plaincopy to clipboardprint?
<s:iterator value="countries">
<s:iterator value="cities">
<s:property value="name"/>, <s:property value="[1].name"/><br>
</s:iterator>
</s:iterator>
<s:iterator value="countries">
<s:iterator value="cities">
<s:property value="name"/>, <s:property value="[1].name"/><br>
</s:iterator>
</s:iterator>
这里的 <ww:property value="name"/>取的是ctiy.name;<ww:property value="[1].name"/>取得是country.name
<ww:property value="[1].name"/> 等价于 <ww:property value="[1].top.name"/>
we refer to a specific position on the stack: '[1]'. The top of the stack, position 0, contains the current city, pushed on by the inner iterator; position 1 contains the current country, pushed there by the outer iterator.(city处于当前栈,即top或者[0],而[1]指明了外层iterator对象,即country)
'[n]'标记引用开始位置为n的子栈(sub-stack),而不仅仅是位置n处的对象。因此'[0]'代表整个栈,而'[1]'是除top对象外所有的栈元素。
分享到:
相关推荐
通过本文档提供的代码示例,我们将深入探讨`<s:iterator>`标签的使用方法及其与不同数据类型(如简单对象、列表、数组)的交互方式。 ### 一、`<s:iterator>`标签的基本用法 `<s:iterator>`标签允许你在JSP页面上...
本文将详细解析`<s:iterator>`标签的使用方法,包括其关键属性、OGNL表达式的应用以及一些高级用法。 #### 1. 基础用法:遍历数组或列表 `<s:iterator>`标签最基本的用法是遍历一个数组或列表。例如: ```xml <s:...
在压缩包中的"example"文件可能包含了一个或多个使用Struts2标签的实际示例,可以参考这些示例来理解和学习Struts2标签的用法。通过实践,你会更好地掌握这些标签的功能和用法,从而在开发过程中更加得心应手。
`struts2标签用法.doc`和`标签详解`文件可能包含更深入的标签用法和实例,例如如何使用`s:form`创建表单,如何利用`s:action`执行Action,以及如何使用`s:debug`标签进行调试等。 5. **Struts2标签的高级用法** -...
在本文中,我们将深入探讨Struts2标签的用法,包括它们的基本概念、类型以及如何在实际开发中应用。 一、Struts2标签基础 Struts2标签库是基于JavaServer Pages (JSP) 标准标签库(JSTL)的扩展,它包含了一系列与...
本文将深入探讨如何使用Struts2中的`<s:iterator>`标签来遍历二维数组,并通过实例代码来具体说明其用法。 ### Struts2 Iterator标签 #### 1. 基本概念 `<s:iterator>`是Struts2的一个非常强大的标签,主要用于...
Struts 2 标签库(文档手册) Tags-API-CLSW-JSP <%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-...
在Struts2中,`iterator`标签是用于遍历集合数据的重要工具,它可以用来迭代Map、List和数组等数据结构,以便在视图层进行展示。本篇文章将深入探讨`iterator`标签在遍历这些数据类型时的具体用法。 首先,我们来看...
### Struts2 标签库详解 Struts2框架作为Struts1的升级版,在功能性和易用性方面有了显著的提升。对于那些已经熟悉...通过本文介绍的一些关键标签及其用法,相信读者可以更快地掌握Struts2的核心概念和技术要点。
这个文档详细列出了所有Struts2标签的用法、属性、事件和示例,对于初学者和经验丰富的开发者都是极其宝贵的资源。 另一方面,`struts2-tags-API.zip`可能是HTML版本的文档源文件,或者是一个包含多个HTML文件的...
参考文档是开发者理解和使用Struts2标签的关键资源,它详细阐述了每个标签的功能、属性、用法及示例,有助于快速学习和掌握Struts2的视图层开发。 通过深入学习和实践Struts2的标签API,开发者可以有效地提升Web...
Struts2标签库是Java Web开发中的一个强大工具,它为开发者提供了丰富的UI组件和控制逻辑,极大地简化了视图层的代码编写。Struts2框架的标签库基于OGNL(Object-Graph Navigation Language)表达式语言,使得在JSP...
在提供的文档中,应该会有详细步骤和实例展示如何配置Struts2的标签库,如何在Action类中定义属性和方法,以及如何在JSP页面中使用这些标签。通过学习和实践,开发者可以更好地理解和掌握Struts2框架,提升Web应用的...
10. **s:iterator标签**:用于迭代集合,常用于遍历列表、数组或Map,可以在循环内部嵌套其他Struts2标签。 11. **s:property标签**:用于显示Action类属性的值,可以格式化输出,支持EL表达式。 12. **s:debug...
Struts2标签库API文档详细列出了每个标签的属性、用法和示例,帮助开发者理解如何有效利用这些标签。通过查阅`struts2-tags-API`文件,你可以找到每个标签的详细信息,包括它们的属性、标签体内容、默认行为等。此外...
在“struts标签.txt”文件中,可能包含了更多关于Struts标签的详细用法和示例。这些标签能够简化JSP页面的编写,提高开发效率,使得业务逻辑和视图层的分离更加清晰。通过学习和理解这些标签,开发者可以更好地掌握...
本文将详细介绍Struts2标签的使用方法,帮助你更好地理解和应用这些标签。 首先,我们来看`struts2-tags-API.chm`文件,这通常是一个帮助文档,包含了Struts2标签库的所有API和详细说明。在实际开发中,开发者可以...
这篇博客将详细介绍Struts2的标签用法。 首先,Struts2的标签库分为核心标签库和结果标签库,核心标签库主要用于处理表单、数据展示等,而结果标签库则与Action的结果输出有关。 1. **核心标签库**: - **s:...
本文将详细介绍Struts2中的常用标签及其用法,并通过具体的实例来帮助理解。 #### 二、Struts2标签库详解 ##### 1. `<s:a>` 超链接标签 - **用途**:创建一个超链接。 - **示例代码**: ```xml 链接文字 ``` - ...