Struts中迭代器的使用

使用iterator遍历一个值。一个可迭代的值可以是java.util.Collection,java.util.Iterator中的任何一个。

参数

begin false 0 false Integer 若指定,那么迭代器将从该索引开始
end false 该'values' List或array的大小, 或若'step'为负则为0 false Integer 若指定,那么迭代器将到该索引结束(含该索引)
id false   false String 已过期。用'var'取代
status false false false Boolean 若指定,那么在每次迭代时,迭代状态的实例将被压入堆栈
step false 1 false Integer 若指定,在每次迭代时,迭代索引将加上此值。它可以是一个负值,在这种情况下,'begin'必须是大于'end'
value false   false String 可迭代源对象进行遍历,另外对象本身将进入一个新创建的列表
var false   false String 名字用于将引用的值推入值栈

例子

下面的示例检索当前对象的值栈getDays()方法的值,并用它来遍历。<s:property/>标签打印出迭代器的当前值。

[html]  view plain  copy
  1. <s:iterator value="days">  
  2.   <p>day is: <s:property/></p>  
  3. </s:iterator>  
下面的示例使用一个Bean标签,并将其放置到ActionContext中。 iterator标签将从ActionContext中检索该对象,然后同上调用其getDays()方法。status属性也可以用来创建一个IteratorStatus对象,该对象在这个例子中,odd()方法被用来交替行颜色:
[html]  view plain  copy
  1. <s:bean name="org.apache.struts2.example.IteratorExample" var="it">  
  2.   <s:param name="day" value="'foo'"/>  
  3.   <s:param name="day" value="'bar'"/>  
  4. </s:bean>  
  5. <p/>  
  6. <table border="0" cellspacing="0" cellpadding="1">  
  7. <tr>  
  8.   <th>Days of the week</th>  
  9. </tr>  
  10. <p/>  
  11. <s:iterator value="#it.days" status="rowstatus">  
  12.   <tr>  
  13.     <s:if test="#rowstatus.odd == true">  
  14.       <td style="background: grey"><s:property/></td>  
  15.     </s:if>  
  16.     <s:else>  
  17.       <td><s:property/></td>  
  18.     </s:else>  
  19.   </tr>  
  20. </s:iterator>  
  21. </table>  
下一个例子将进一步证明使用status属性,从actioin类通过OGNL使用DAO,遍历组和他们的用户(在安全环境)。last()方法,表示如果当前对象是在迭代过程中的最后一个可用的,如果不是,我们需要使用一个逗号分隔的用户:

[html]  view plain  copy
  1. <s:iterator value="groupDao.groups" status="groupStatus">  
  2.     <tr class="<s:if test="#groupStatus.odd == true ">odd</s:if><s:else>even</s:else>">  
  3.         <td><s:property value="name" /></td>  
  4.         <td><s:property value="description" /></td>  
  5.         <td>  
  6.             <s:iterator value="users" status="userStatus">  
  7.                 <s:property value="fullName" /><s:if test="!#userStatus.last">,</s:if>  
  8.             </s:iterator>  
  9.         </td>  
  10.     </tr>  
  11. </s:iterator>  
下一个例子遍历一个action集合,每个迭代值传递到另一个action中。这里的诀窍在于使用'[0]'运算符。它采用当前迭代器值,并把它传递到编辑操作。使用'[0]'运算符具有相同的效果,使用<s:property/>。 (然而后者,内部参数标签不运行)。
[html]  view plain  copy
  1. <s:action name="entries" var="entries"/>  
  2. <s:iterator value="#entries.entries" >  
  3.     <s:property value="name" />  
  4.     <s:property />  
  5.     <s:push value="...">  
  6.         <s:action name="edit" var="edit" >  
  7.             <s:param name="entry" value="[0]" />  
  8.         </s:action>  
  9.     </push>  
  10. </s:iterator>  
一个迭代5次的循环

[html]  view plain  copy
  1. <s:iterator var="counter" begin="1" end="5" >  
  2.    <!-- current iteration value (1, ... 5) -->  
  3.    <s:property value="top" />  
  4. </s:iterator>  
另一种方式来创建一个简单的循环,类似于JSTL的 <c:forEach begin="..." end="..." ...> 是使用一些的OGNL魔力,它提供了一些覆盖魔力使0-N循环实现。这个例子也循环五次。
[html]  view plain  copy
  1. <s:iterator status="stat" value="(5).{ #this }" >  
  2.    <s:property value="#stat.count" /> <!-- Note that "count" is 1-based, "index" is 0-based. -->  
  3. </s:iterator>  
一个迭代部分列表的循环
[html]  view plain  copy
  1. <s:iterator value="{1,2,3,4,5}" begin="2" end="4" >  
  2.    <!-- current iteration value (2,3,4) -->  
  3.    <s:property value="top" />  
  4. </s:iterator>  
本文粗略翻译了Struts官网上的s:iterator标签,看起来“和谐”些,不妥之处还请指正~

原文地址:http://struts.apache.org/release/2.3.x/docs/iterator.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值