`
scorpiomiracle
  • 浏览: 260388 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

(转)struts2中iterator标签的一些使用方法

阅读更多
由于在编程中,只想遍历一个二维数组,查到了下面这篇文章,就转载过来了,其中除二维数组部分成功验证外,其他均未验证,暂收藏之。

============================================================================================================

在说明s:iterator标签的使用前,先了解下struts2中的Value Stack。这里参考了webwork中对Value Stack的描述,由于struts2是在webwork的基础上进行升级的,因此webwork对于Value Stack的表述同样适用于struts2。在这里不描述Value Stack具体做什么,但有两点需要注意:
1.一个value stack本质上是一个List;
2.在栈中调用[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"]
<s:iterator value="days"><s:property /></s:iterator>


2) 、使用 top 关键字(来过滤掉Monday)
defined  List<String>  days   ["Monday","Thursday","Friday","Sunday"]
<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 = { { "一", "二", "三", "四" },{ "一一", "二二", "三三", "四四"} };
<!--遍历二维数组,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"]
<!--奇数行显示为红色,偶数行显示为绿色-->  
<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属性就的用如下方式:
<s:iterator value="countries">  
    <s:iterator value="cities">  
        <s:property value="name"/>, <s:property value="[1].name"/><br>  
    </s:iterator>  
</s:iterator>  

这里的 <s:property value="name"/>取的是ctiy.name;<s:property value="[1].name"/>取得是country.name
<s:property value="[1].name"/> 等价于 <s: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 标签的使用详解

    struts2中iterator 标签的使用详解

    struts2 标签iterator使用

    struts2 标签iterator使用我自己试过的

    struts2 iterator标签遍历二维数组

    其实只有一点struts2 iterator标签遍历二维数组

    struts2中siterator 标签的使用详解 及 OGNL用法

    struts2中siterator 标签的使用详解 及 OGNL用法 struts2中siterator 标签的使用详解 及 OGNL用法

    iterator嵌套,struts2

    struts2 中标签的使用 这段时间学习用struts2来开发网站,其中对一些struts2的标签在实际操作上有一些体会。 一.关于iterator迭代集合对象的问题:

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

    NULL 博文链接:https://takeme.iteye.com/blog/1663239

    struts2标签之列求和

    可对struts2 标签如&lt;iterator&gt;等相应列进行求和.

    struts2讲义_吴峻申

    1.4 Web项目中使用Struts2初探 20 第2章 Web基础技术简介 31 2.1 B/S和C/S系统区别 31 2.2 JSP和Servlet介绍 32 2.3 XML知识介绍 34 第3章 Struts2核心技术 37 3.1 使用web.xml配置Struts2实现Web项目Struts2应用 37...

    struts与jsp 使用方法

    在action里面写了方法获取一个list,再将这个list的值放到jsp页面中显示出来,用的是&lt;s:iterator&gt;标签。

    struts2标签详解

    struts2标签详解 Iterator

    Struts2标签库

    &lt;%@ taglib uri="/struts-tags" prefix="s" %&gt; 结合例子,重点掌握以下标签的用法 (1) (2) (3) &lt;s:if&gt; 、、 (4) &lt;s:iterator&gt; (5) (6) 、 (7) 、、、 (8) 、、&lt;s:checkboxlist&gt;

    Struts2 in action中文版

    9.1 为什么在Struts 2中使用Spring 196 9.1.1 依赖注入能做些什么 197 9.1.2 Spring如何管理对象和注入依赖 199 9.1.3 使用接口隐藏实现 200 9.2 将Spring添加到Struts 2 202 9.2.1 让Spring管理动作、拦截器和结果...

    Struts2常用标签总结

    该文档 主要描述struts2 常用的一些标签 帮助 对struts标签存在 疑惑的朋友更好更迅速的了解和学习

    Struts2通用标签用法示例

    主要介绍Strus2中的通用标签,主要有, , , , , , &lt;s:iterator&gt;, , , 等几个标签的具体用法,希望能对大家有帮助。

    struts2标签技术

    生成一个简单的iterator,并且使用iterator标签打印出内容。 ,bbb,ccc,ddd,eee'}"&gt; &lt;s:iterator&gt; &lt;s:property /&gt;&lt;br/&gt; &lt;/s:iterator&gt; 例2: 生成一个iterator,使用count属性。因为count属性值为3,所以只有前...

    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(附源码)

    5.1 Struts标签的使用方法 59 5.2 表单标签的共同属性 60 5.3 form标签 62 5.4 textfield、password、hidden标签 63 5.5 submit标签 65 5.6 reset标签 65 5.7 label标签 66 5.8 head标签 66 5.9 textarea...

    Struts2 学习笔记

    六、 Iterator标签 31 七、 Theme 31 05设计约定(编码规定) 32 06 项目开发顺序 32 07 声明式异常处理 33 08 国际化 35 一、 国际化资源文件 35 二、 Java国际化 35 三、 Struts2国际化 35 1、 Action级别 35 2、 ...

    struts2 web 开发标签

    web开发struts2标签 &lt;s:property&gt;&lt;/s:property&gt; &lt;s:iterator&gt;&lt;/s:iterator&gt;

    Struts2+API+标签全解+网页说明

    将多个集合使用一个&lt;iterator/&gt;标签完成迭代。 generatot标签:将指定的字符串按照规定的分隔符分解成多个子字符串。 merge标签:将多个集合拼接在一起。 subset标签:获取某个集合的子集合。 sort标签:多指定...

Global site tag (gtag.js) - Google Analytics