iterator标签主要用于对集合进行迭代,实现数据输出,这里的集合主要包括List,Set和数组,同时也对Map进行迭代。
iterator有三个属性:
value:可选属性,指定被迭代的集合。
id:可选属性,该属性指定了集合里元素的id,没多大用。
status:可选,迭代集合时的索引。
1.基本用法,通过id,迭代输出
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!-- 引入struts标签库 --> <%@taglib uri="/struts-tags" prefix="s"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%-- <base href="<%=basePath%>"> --%> <title>struts2标签</title> </head> <body> <!-- value被迭代的集合,id指定集合里元素的id,根据id拿到对应的值,显示页面 --> <s:iterator value="{'one','two','three'}" id="number"> <!-- 用不用#号都代表用id拿集合元素的值,都行 --> <s:property value="#number"/> <%-- <s:property value="number"/> --%> </s:iterator> </body> </html>2.status的使用,索引用法
如果使用了status属性,每次迭代时都会有一个实例,IteratorStatus类.
该类包括以下几个方法:
int getCount():返回当前迭代了几个元素。
int getIndex():返回当前迭代元素的索引。
boolean isEvent():返回当前迭代元素的索引是否是偶数。
boolean isFirst():返回当前迭代的元素是否是第一个元素。
boolean isLast():返回当前迭代的元素是否是第一个元素。
boolean isOdd():返回当前迭代的元素是否是奇数。
实例使用:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!-- 引入struts标签库 --> <%@taglib uri="/struts-tags" prefix="s"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%-- <base href="<%=basePath%>"> --%> <title>struts2标签</title> </head> <body> <!-- iterator的status属性使用实例 --> <s:iterator value="{'a','b','c'}" id="myArr" status="st"> <s:if test="#st.Even">注:索引下标从0开始<br> 奇数索引是:<s:property value="#st.index"/><br> 对应的元素值:<s:property value="#myArr"/><br> 循环到当前元素时循环了几次:<s:property value="#st.getCount()"/><br> 当前元素对应的索引:<s:property value="#st.getIndex()"/><br> 当前元素对应的在数组中的位置是否是偶数:<s:property value="#st.isEven()"/><br> 当前元素对应的在数组中的位置是否是奇数:<s:property value="#st.isOdd()"/><br> 当前元素在数组中是否是第一个元素:<s:property value="#st.isFirst()"/><br> 当前元素在数组中是否是最后一个元素:<s:property value="#st.isLast()"/> </s:if> </s:iterator> </body> </html>
结果:
奇数索引是:1
对应的元素值:b
循环到当前元素时循环了几次:2
当前元素对应的索引:1
当前元素对应的在数组中的位置是否是偶数:true
当前元素对应的在数组中的位置是否是奇数:false
当前元素在数组中是否是第一个元素:false
当前元素在数组中是否是最后一个元素:false
注:索引下标从0开始
3.map迭代实例<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!-- 引入struts标签库 --> <%@taglib uri="/struts-tags" prefix="s"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%-- <base href="<%=basePath%>"> --%> <title>struts2标签</title> </head> <body> <!-- iterator的status属性使用实例 --> <s:iterator value="#{'one':'第一名','two':'第二名','three':'第三名'}" status="st"> key:<s:property value="key"/> value:<s:property value="value"/><br> </s:iterator> </body> </html>
运行结果:
key:one value:第一名
key:two value:第二名
key:three value:第三名