struts标签<s:iterator>的遍历

本文详细介绍了如何使用迭代器等方法遍历不同类型的数据结构,包括普通列表、包含字符串数组的列表以及复杂的map结构,并展示了遍历后的数据展示效果。通过实例解析了遍历过程中的关键技巧,如将复杂数据结构视为数组进行遍历,以及如何使用迭代器进行分层遍历。同时,还提供了一个用于合并单元格的JavaScript函数,以优化展示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1、普通list的遍历,list封装的是对象

<table width="100%" border="0" cellspacing="0" cellpadding="0"
			class="info_tab1">
			<tr>
				<th width="20%">编号</th>
				<th width="20%">姓名</th>
				<th width="20%">归属系</th>
				<th width="20%">联系电话</th>
				<th>操作</th>
			</tr>
			<s:iterator value="teacherList" status="varStatus">
			<tr>
				<td><s:property value="tid" /></td>
				<td><s:property value="tname" /></td>
				<td><s:property value="belong" /></td>
				<td><s:property value="ttel" /></td>
				<td>
					<a href="javascript:modTeacher('<s:property value="tid" />');">修改</a>
					<a href="javascript:delTeacher('<s:property value="tid" />');">删除</a>
				</td>
			</tr>
			</s:iterator>
		</table>


效果图:


2、稍复杂一点的,List<String[]>,list里面封装的是一个字符串数组,诀窍就是把list一样当做数组来遍历,例如:

<table width="100%" class="info_tab1">
			<tr>
				<th>周次</th>
				<th>星期</th>
				<th>节次</th>
				<th>上课地点</th>
				<th>操作</th>
			</tr>
			<s:iterator value="viewList" status="column">
			<tr>
				<td><s:property value="viewList[#column.index][0]"/></td>
				<td><s:property value="viewList[#column.index][1]"/></td>
				<td><s:property value="viewList[#column.index][2]"/></td>
				<td><s:property value="viewList[#column.index][3]"/></td>
				<td><a href="javascript:modScheduling('<s:property value="viewList[#column.index]"/>','<s:property value="tcid"/>');">调课</a></td>
			</tr>
			</s:iterator>
		</table>

效果如下:


3、再稍微复杂一点的,比如说我要遍历一个map,而且map的结构稍复杂:Map<String,Map<Integer,List<String[]>>>

首先说一下我这个结构的大致意思,我这里设计的是课程表的数据结构,一个教室对应一个课表,所以外面的map的key是课室号,value属于课表内容,然后里面的map呢我是根据单元格来设计的,就是说每一个单元格放相应的课程,比如说:星期一第一节这个单元格需要上数学这门课;


遍历如下:

<s:iterator value="courseTableMap" id="column">
    <h2 align="center"><s:property value="key"/></h2>
    	<table cellpadding="1" cellspacing="1" border="1px" width="100%">
    		<tr>
    			<th width="4%">星期/节次</th>
    			<th width="9.7%">1</th>
    			<th width="9.7%">2</th>
    			<th width="9.7%">3</th>
    			<th width="9.7%">4</th>
    			<th width="9.7%">中午</th>
    			<th width="9.7%">5</th>
    			<th width="9.7%">6</th>
    			<th width="9.7%">7</th>
    			<th width="9.7%">8</th>
    			<th>晚上</th>
    		</tr>
    		<tr>
    			<td>星期一</td>
    			<s:iterator value="#column.value" id="dd">
    			
    			<s:if test="#dd.key>=0&&#dd.key<10">
    			<td>
    				<s:iterator value="#dd.value" id="se">
    					<s:property value="#se[0]"/> 
    					<s:property value="#se[1]"/> 
    					<s:property value="#se[2]"/> 
    					<s:property value="#se[3]"/>人 
    					第<s:property value="#se[4]"/>周 
    					<br/>
    				</s:iterator>
    			</td>
    			
    			</s:if>
    			
    			
    			
    			</s:iterator>
    		
    		</tr>
    		<tr>
    			<td>星期二</td>
    			<s:iterator value="#column.value" id="dd">
    			
    			<s:if test="#dd.key>=10&&#dd.key<20">
    			<td>
    				<s:iterator value="#dd.value" id="se">
    					<s:property value="#se[0]"/> 
    					<s:property value="#se[1]"/> 
    					<s:property value="#se[2]"/> 
    					<s:property value="#se[3]"/>人 
    					第<s:property value="#se[4]"/>周 
    					<br/>
    				</s:iterator>
    			</td>
    			
    			</s:if>
    			
    			
    			
    			</s:iterator>
    		
    		</tr>
    		<tr>
    			<td>星期三</td>
    			<s:iterator value="#column.value" id="dd">
    			
    			<s:if test="#dd.key>=20&&#dd.key<30">
    			<td>
    				<s:iterator value="#dd.value" id="se">
    					<s:property value="#se[0]"/> 
    					<s:property value="#se[1]"/> 
    					<s:property value="#se[2]"/> 
    					<s:property value="#se[3]"/>人 
    					第<s:property value="#se[4]"/>周 
    					<br/>
    				</s:iterator>
    			</td>
    			
    			</s:if>
    			
    			
    			
    			</s:iterator>
    		
    		</tr>
    		<tr>
    			<td>星期四</td>
    			<s:iterator value="#column.value" id="dd">
    			
    			<s:if test="#dd.key>=30&&#dd.key<40">
    			<td>
    				<s:iterator value="#dd.value" id="se">
    					<s:property value="#se[0]"/> 
    					<s:property value="#se[1]"/> 
    					<s:property value="#se[2]"/> 
    					<s:property value="#se[3]"/>人 
    					第<s:property value="#se[4]"/>周 
    					<br/>
    				</s:iterator>
    			</td>
    			
    			</s:if>
    			
    			
    			
    			</s:iterator>
    		
    		</tr>
    		<tr>
    			<td>星期五</td>
    			<s:iterator value="#column.value" id="dd">
    			
    			<s:if test="#dd.key>=40&&#dd.key<50">
    			<td>
    				<s:iterator value="#dd.value" id="se">
    					<s:property value="#se[0]"/> 
    					<s:property value="#se[1]"/> 
    					<s:property value="#se[2]"/> 
    					<s:property value="#se[3]"/>人 
    					第<s:property value="#se[4]"/>周 
    					<br/>
    				</s:iterator>
    			</td>
    			
    			</s:if>
    			
    			
    			
    			</s:iterator>
    		
    		</tr>
    		<tr>
    			<td>星期六</td>
    			<s:iterator value="#column.value" id="dd">
    			
    			<s:if test="#dd.key>=50&&#dd.key<60">
    			<td>
    				<s:iterator value="#dd.value" id="se">
    					<s:property value="#se[0]"/> 
    					<s:property value="#se[1]"/> 
    					<s:property value="#se[2]"/> 
    					<s:property value="#se[3]"/>人 
    					第<s:property value="#se[4]"/>周 
    					<br/>
    				</s:iterator>
    			</td>
    			
    			</s:if>
    			
    			
    			
    			</s:iterator>
    		
    		</tr>
    		<tr>
    			<td>星期天</td>
    			<s:iterator value="#column.value" id="dd">
    			
    			<s:if test="#dd.key>=60&&#dd.key<70">
    			<td>
    				<s:iterator value="#dd.value" id="se">
    					<s:property value="#se[0]"/> 
    					<s:property value="#se[1]"/> 
    					<s:property value="#se[2]"/> 
    					<s:property value="#se[3]"/>人 
    					第<s:property value="#se[4]"/>周 
    					<br/>
    				</s:iterator>
    			</td>
    			
    			</s:if>  			
    			</s:iterator>
    		
    		</tr>
    		
    	
    	</table>
    </s:iterator>
效果如下:


这里用了一个很笨的方法来遍历,另外这里还用了一个js来合并单元格,具体如下:


<script type="text/javascript">
$(document).ready(function(){
  $("tr").each(function(index, tre) {
			var txt = "";
			var cnt = 1;
			var pos = 1;
			var before = 0;
            $(tre).find("td").each(function(index, tde) {
               if ($(tde).text() == txt) {
				   cnt++;
				   $(tre).children("td").eq(pos).attr("colspan", cnt);
				   $(tde).remove();
			   } else {
				   before += cnt - 1;
				   pos = index - before;
				   cnt = 1;
			       txt = $(tde).text();
			   }
            });
        });
});

</script>

第一次写博客,请多多指教。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值