struts2 iterator标签使用

1.iterator标签使用

*用来处理循环,可以用它遍历数组,Set和List等集合对象,这个标签还支持在ActionContext中保持一个保存遍历状态的对象,通过这个变量可以得到当前循环的各种信息。
 
      *它在遍历一组对象的时候,它把正在循环的对象放在值栈的栈顶,所以可以直接使用这个对象的方法或者属性。
 
      *属性信息
 
           *value:用来指明访问的是哪个对象。
 
           *status:这个属性在ActionContext中保存一个对象,用来返回当前循环的各种信息,可以返回的信息如下:
 
                 *count:集合含有多少个对象
 
                 *index:正在循环的这一项的索引
 
                 *even:当前遍历到的对象是不是处于列表的偶数索引位置
 
                 *odd:当前遍历到的对象是不是处于列表的奇数索引位置
 
                 *first:正在循环的是不是第一个
 
                 *last:正在循环的是不是最后一个
 
                 *begin, end,step:指明了如果使用索引来进行循环时的开始、结束和步长。
 
                 *var:变量名称,用来引用存放到值栈的被循环的对象

 

简单示例1:实现类似于for循环的功能

 

     <s:iterator var="i" begin="1" end="10" step="1">
         <s:property value="#i"/>
     </s:iterator>

简单示例2:实现类似于while循环的功能

 

<%
        List strList = new ArrayList();
        for(int i = 0; i < 10; i++) {
        	   strList.add("str" + i);
        }
        request.setAttribute("strList", strList);
    %>
     <s:iterator var="str" value="#request['strList']">
         <s:property value="#str"/>
     </s:iterator>

 

输出结果:

    str0 str1 str2 str3 str4 str5 str6 str7 str8 str9

 

简单示例3:访问复杂对象

 <%
        List userList = new ArrayList();
    
        User user1 = new User();
        user1.setAge(20);
        user1.setName("zhangsan");
        
        User user2 = new User();
        user2.setAge(30);
        user2.setName("lisi");
        
        userList.add(user1);
        userList.add(user2);
   
        request.setAttribute("users", userList);
        
    %>
     <s:iterator var="user" value="#request.users">
         user.name=<s:property value="name"/>,
         user.age=<s:property value="age"/><br/>
     </s:iterator>


 

输出结果:

user.name=zhangsan,user.age=20 

user.name=lisi,user.age=30

 

简单示例4:使用status属性

          如果想输出当前循环的索引,或者是想要把循环输出的数据用表格来展示,并按照奇数行和偶数行来设置不同的背景色,也就是用户熟悉的波浪纹或者斑马纹的效果。
就要使用status属性。<s:property>引用status属性名称的时候前面要加#号

 

  <%
        List userList = new ArrayList();
    
        User user1 = new User();
        user1.setAge(20);
        user1.setName("zhangsan");
        
        User user2 = new User();
        user2.setAge(30);
        user2.setName("lisi");
        
        userList.add(user1);
        userList.add(user2);
   
        request.setAttribute("users", userList);
        
    %>
     <s:iterator var="user" value="#request.users" status="state">
                           索引=<s:property value="#state.index"/>,
         user.name=<s:property value="name"/>,
         user.age=<s:property value="age"/><br/>
     </s:iterator>

 

输出结果:

索引=0, user.name=zhangsan,user.age=20 

索引=1, user.name=lisi,user.age=30

 

简单示例:5:实现斑马纹与波浪纹效果

 <%
        List userList = new ArrayList();
    
        User user1 = new User();
        user1.setAge(20);
        user1.setName("zhangsan");
        
        User user2 = new User();
        user2.setAge(30);
        user2.setName("lisi");
        
        User user3 = new User();
        user3.setAge(30);
        user3.setName("wangwu");
        
        User user4 = new User();
        user4.setAge(30);
        user4.setName("maliu");
        
        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);
       
        request.setAttribute("users", userList);
        
    %>
     <table border="1">
          <tr>
              <td colspan=4 align="center">用户列表</td>
          </tr>
          <tr>
              <td>索引</td>
              <td>用户姓名</td>
              <td>用户年龄</td>
              <td>操作</td>
          </tr>
           <s:iterator var="user" value="#request.users" status="state">
          <tr
             <s:if test="#state.even">
                 bgcolor="#EFF8FF"
             </s:if>
             <s:else>
                 bgcolor="#B4CFF1"
             </s:else>
             >
             <td><s:property value="#state.index"/></td>
             <td><s:property value="name"/></td>
             <td><s:property value="age" /></td>
             <td><a href="">修改</a>    <a href="">删除</a></td>
          </tr>
     </s:iterator>
     </table>


输出结果:

输出结果:


 

<li>遍历集合:<br />
		<s:iterator value="{1, 2, 3}" >
			<s:property/> |
		</s:iterator>
		</li>
		<li>自定义变量:<br />
		<s:iterator value="{'aaa', 'bbb', 'ccc'}" var="x">
			<s:property value="#x.toUpperCase()"/> |
		</s:iterator>
		</li>
		<li>使用status:<br />
		<s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status">
			<s:property/> | 
			遍历过的元素总数:<s:property value="#status.count"/> |
			遍历过的元素索引:<s:property value="#status.index"/> |
			当前是偶数?:<s:property value="#status.even"/> |
			当前是奇数?:<s:property value="#status.odd"/> |
			是第一个元素吗?:<s:property value="#status.first"/> |
			是最后一个元素吗?:<s:property value="#status.last"/>
			<br />
		</s:iterator>
		
		</li>
		
		<li>
		<s:iterator value="#{1:'a', 2:'b', 3:'c'}" >
			<s:property value="key"/> | <s:property value="value"/> <br />
		</s:iterator>
		</li>
		
		<li>
		<s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
			<s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
		</s:iterator>
		</li>


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值