`
yangxianjiangg
  • 浏览: 62083 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts2标签iterator的用法

阅读更多

在说明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对象外所有的栈元素。

分享到:
评论

相关推荐

    struts2 标签iterator使用

    通过本文档提供的代码示例,我们将深入探讨`&lt;s:iterator&gt;`标签的使用方法及其与不同数据类型(如简单对象、列表、数组)的交互方式。 ### 一、`&lt;s:iterator&gt;`标签的基本用法 `&lt;s:iterator&gt;`标签允许你在JSP页面上...

    struts2中iterator 标签的使用详解

    本文将详细解析`&lt;s:iterator&gt;`标签的使用方法,包括其关键属性、OGNL表达式的应用以及一些高级用法。 #### 1. 基础用法:遍历数组或列表 `&lt;s:iterator&gt;`标签最基本的用法是遍历一个数组或列表。例如: ```xml &lt;s:...

    struts2标签使用例子

    在压缩包中的"example"文件可能包含了一个或多个使用Struts2标签的实际示例,可以参考这些示例来理解和学习Struts2标签的用法。通过实践,你会更好地掌握这些标签的功能和用法,从而在开发过程中更加得心应手。

    Struts2标签使用及API文档

    `struts2标签用法.doc`和`标签详解`文件可能包含更深入的标签用法和实例,例如如何使用`s:form`创建表单,如何利用`s:action`执行Action,以及如何使用`s:debug`标签进行调试等。 5. **Struts2标签的高级用法** -...

    struts2标签用法详解

    在本文中,我们将深入探讨Struts2标签的用法,包括它们的基本概念、类型以及如何在实际开发中应用。 一、Struts2标签基础 Struts2标签库是基于JavaServer Pages (JSP) 标准标签库(JSTL)的扩展,它包含了一系列与...

    struts2 iterator标签遍历二维数组

    本文将深入探讨如何使用Struts2中的`&lt;s:iterator&gt;`标签来遍历二维数组,并通过实例代码来具体说明其用法。 ### Struts2 Iterator标签 #### 1. 基本概念 `&lt;s:iterator&gt;`是Struts2的一个非常强大的标签,主要用于...

    struts2 标签库 帮助文档

    Struts 2 标签库(文档手册) Tags-API-CLSW-JSP &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-...

    Struts2 iterator 标签遍历 Map,List,数组(三十六)

    在Struts2中,`iterator`标签是用于遍历集合数据的重要工具,它可以用来迭代Map、List和数组等数据结构,以便在视图层进行展示。本篇文章将深入探讨`iterator`标签在遍历这些数据类型时的具体用法。 首先,我们来看...

    struts2标签库

    ### Struts2 标签库详解 Struts2框架作为Struts1的升级版,在功能性和易用性方面有了显著的提升。对于那些已经熟悉...通过本文介绍的一些关键标签及其用法,相信读者可以更快地掌握Struts2的核心概念和技术要点。

    Struts2标签中文文档(html和chm格式)

    这个文档详细列出了所有Struts2标签的用法、属性、事件和示例,对于初学者和经验丰富的开发者都是极其宝贵的资源。 另一方面,`struts2-tags-API.zip`可能是HTML版本的文档源文件,或者是一个包含多个HTML文件的...

    struts2 标签 tags API 参考文档

    参考文档是开发者理解和使用Struts2标签的关键资源,它详细阐述了每个标签的功能、属性、用法及示例,有助于快速学习和掌握Struts2的视图层开发。 通过深入学习和实践Struts2的标签API,开发者可以有效地提升Web...

    struts2标签解析

    Struts2标签库是Java Web开发中的一个强大工具,它为开发者提供了丰富的UI组件和控制逻辑,极大地简化了视图层的代码编写。Struts2框架的标签库基于OGNL(Object-Graph Navigation Language)表达式语言,使得在JSP...

    struts2标签库的使用pdf+Word格式

    在提供的文档中,应该会有详细步骤和实例展示如何配置Struts2的标签库,如何在Action类中定义属性和方法,以及如何在JSP页面中使用这些标签。通过学习和实践,开发者可以更好地理解和掌握Struts2框架,提升Web应用的...

    struts2标签大全

    10. **s:iterator标签**:用于迭代集合,常用于遍历列表、数组或Map,可以在循环内部嵌套其他Struts2标签。 11. **s:property标签**:用于显示Action类属性的值,可以格式化输出,支持EL表达式。 12. **s:debug...

    struts2标签库详解(非常不错)

    Struts2标签库API文档详细列出了每个标签的属性、用法和示例,帮助开发者理解如何有效利用这些标签。通过查阅`struts2-tags-API`文件,你可以找到每个标签的详细信息,包括它们的属性、标签体内容、默认行为等。此外...

    图像加法&struts用法标签大全

    在“struts标签.txt”文件中,可能包含了更多关于Struts标签的详细用法和示例。这些标签能够简化JSP页面的编写,提高开发效率,使得业务逻辑和视图层的分离更加清晰。通过学习和理解这些标签,开发者可以更好地掌握...

    struts2标签用法

    本文将详细介绍Struts2标签的使用方法,帮助你更好地理解和应用这些标签。 首先,我们来看`struts2-tags-API.chm`文件,这通常是一个帮助文档,包含了Struts2标签库的所有API和详细说明。在实际开发中,开发者可以...

    struts2标签用法(详情见附件)

    这篇博客将详细介绍Struts2的标签用法。 首先,Struts2的标签库分为核心标签库和结果标签库,核心标签库主要用于处理表单、数据展示等,而结果标签库则与Action的结果输出有关。 1. **核心标签库**: - **s:...

    Struts2标签详解及具体实例解析

    本文将详细介绍Struts2中的常用标签及其用法,并通过具体的实例来帮助理解。 #### 二、Struts2标签库详解 ##### 1. `&lt;s:a&gt;` 超链接标签 - **用途**:创建一个超链接。 - **示例代码**: ```xml 链接文字 ``` - ...

Global site tag (gtag.js) - Google Analytics