首页 > 代码库 > s:iterator 用法及实例

s:iterator 用法及实例

s:iterator 的 属性 简介
属性名 是否必须默认值类型说明
statusfalsefalseString默认不指定此属性,如果指定,则会创建一个IteratorStatus类的对象,此对象名即为此属性的值,下文会详细介绍
valuefalse String被循环的集合,包括Map、List、set、数组
varfalse String集合中的每个元素,放到值栈中,通过此访问遍历的集合中的元素,
beginfalse0int开始遍历的索引
end   类似begin

 

 

 

 

 

 

 

*IneratorStatus对象介绍:

  此类的对象封装了本次循环的相关信息,通过访问其属性获得,主要属性有:

    index:当前循环到的集合的索引

    count:已经循环的次数

    first:是否为第一次循环

    last:是否为最后一次循环

    odd:当前位置是否为奇数

    even:当前位置是否为偶数

eg:

新建类Action1.java,代码如下:

package my.test;import com.opensymphony.xwork2.ActionSupport;public class Action1 extends ActionSupport{    private String[] arr=new String[5];        //一定要添加get/set方法,否则会出现空指针异常    public String[] getArr() {        return arr;    }    public void setArr(String[] arr) {        this.arr = arr;    }    public String execute(){        int i=101;        //下面的for循环的赋值不起作用        for(String a:arr){            a=""+i++;        }        arr[3]="this is 3";//这里验证上面的for循环对arr的赋值是不起作用的,这里由String数组和String的特性来决定,看运行结果即可        return SUCCESS;    }}

新建jsp文件/iterator.jsp,记得引入Struts的标签

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>    <s:debug></s:debug>    <s:iterator var="one" value="arr" begin="2" status="sta">        <!-- 由于循环到的值保存到值栈中,所以下面通过s:property标签取值 -->        循环到的值为:<s:property value="one"/><br>        循环的次数为:<s:property value="#sta.count"/><br>        循环的索引为:<s:property value="#sta.index"/><br>        是否为奇数:<s:property value="#sta.odd"/><hr>    </s:iterator></body></html>

最后配置文件来一个:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <constant name="struts.enable.DynamicMethodInvocation" value="false" />    <constant name="struts.devMode" value="true" />        <package name="test" namespace="/" extends="struts-default">        <action name="iterator" class="my.test.Action1">            <result>/iterator.jsp</result>        </action>        <action name="index">            <result type="redirectAction">                <param name="actionName">HelloWorld</param>                <param name="namespace">/example</param>            </result>        </action>    </package>    <!-- Add packages here --></struts>

笔者用的是Struts2 2.3.30版本,不同版本的配置文件是不一样滴

运行一个:

技术分享

上面的Debug如有疑问,自行百度~

s:iterator 用法及实例