属性名 | 是否必须 | 默认值 | 类型 | 说明 |
status | false | false | String | 默认不指定此属性,如果指定,则会创建一个IteratorStatus类的对象,此对象名即为此属性的值,下文会详细介绍 |
value | false | String | 被循环的集合,包括Map、List、set、数组 | |
var | false | String | 集合中的每个元素,放到值栈中,通过此访问遍历的集合中的元素, | |
begin | false | 0 | int | 开始遍历的索引 |
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如有疑问,自行百度~
时间: 2024-10-16 01:10:15