Struts中迭代器的使用

    xiaoxiao2025-07-15  6

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

    参数

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

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

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

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

    转载请注明原文地址: https://ju.6miu.com/read-1300729.html
    最新回复(0)