`
yangxianjiangg
  • 浏览: 59756 次
  • 性别: 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标签库

    &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通用标签用法示例

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

    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中siterator 标签的使用详解 及 OGNL用法

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

    struts2讲义_吴峻申

    10.1 sitemesh基本使用方法 194 10.2 sitemesh高级应用 198 10.2.1 和标签的使用介绍 198 10.2.2 、和标签的使用介绍 200 附录 204 附录1 安装JBoss让它部署Web项目 204 F1.1 安装 204 F1.2 手工部署Web项目 207 ...

    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中文版

    8.1.1 页面上:如何使用自定义结果组件构建Struts 2 Ajax应用程序 171 8.1.2 实现JSON结果类型 173 8.2 常用的结果类型 180 8.2.1 RequestDispatcher,也叫做dispatcher 180 8.2.2 ServletRedirectResult,也叫做...

    struts与jsp 使用方法

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

    Struts2 学习笔记

    Struts2标签目录 28 一、 property标签 28 二、 set标签 29 三、 bean标签 29 四、 标签-少使用 29 五、 If elseif else 30 六、 Iterator标签 31 七、 Theme 31 05设计约定(编码规定) 32 06 项目开发顺序 32 07 ...

    struts2入门实例2 经典入门必备

    有写&lt;s:iterator/&gt;标签的用法 7.Struts2_03_TypeConverter6 把上面数组的改成list的了 8.Struts2_03_TypeConverter7 OGNL表达式实现类型转换 9.Struts2_03_validate_review 输入校验 ————复习前面的 ...

    深入浅出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入门实例1

    有写&lt;s:iterator/&gt;标签的用法 7.Struts2_03_TypeConverter6 把上面数组的改成list的了 8.Struts2_03_TypeConverter7 OGNL表达式实现类型转换 9.Struts2_03_validate_review 输入校验 ————复习前面的 ...

    struts2入门实例3 经典入门必备

    有写&lt;s:iterator/&gt;标签的用法 7.Struts2_03_TypeConverter6 把上面数组的改成list的了 8.Struts2_03_TypeConverter7 OGNL表达式实现类型转换 9.Struts2_03_validate_review 输入校验 ————复习前面的 ...

    struts2入门实例4 经典入门必备

    有写&lt;s:iterator/&gt;标签的用法 7.Struts2_03_TypeConverter6 把上面数组的改成list的了 8.Struts2_03_TypeConverter7 OGNL表达式实现类型转换 9.Struts2_03_validate_review 输入校验 ————复习前面的 ...

    Struts2帮助```````

    Struts2标签目录 28 一、 property标签 28 二、 set标签 29 三、 bean标签 29 四、 标签-少使用 29 五、 If elseif else 30 六、 Iterator标签 31 七、 Theme 31 05设计约定(编码规定) 32 06 项目开发顺序 32 07 ...

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

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

    低清版 大型门户网站是这样炼成的.pdf

    11.4.1 展示层jsp 2+struts 2标签库实现 711 11.4.2 控制层struts 2实现 720 11.4.3 持久层hibernate 3实现 728 11.4.4 spring 2接管业务逻辑层 730 11.5 小结 733 第12章 站务必备—系统用户管理与流量统计 ...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    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标签 66 ...

Global site tag (gtag.js) - Google Analytics