在之前写的一些项目中,在很多时候我们只是在jsp中通过iterator对于list<E>或者是Map<T>中的元素进行简单便利,但是如果是List<List<E>>呢,这就涉及到了iterator的双层迭代,不过在进入这一部分之前呢,我们首先学习一下在简单的list<E>时在jsp中使怎么遍历的,看代码:
<!--iterator 说明
* 当前迭代的元素在栈顶
* 如果value的值为top,则默认迭代栈顶元素
* 如果value属性不写,则认为是迭代栈顶元素
-->
<s:iterator value="#session.list" var="list">
<td><s:property value="#list.dname"/></td>
<td><s:property value="#list.description"/></td>
<td><a οnclick="delete()">删除</a>
<td><a οnclick="update()">修改</a>
</s:iterator >
但是如果是list集合中存着list呢,也就是List<List<E>>,这时候就需要用到双层迭代器,看代码:
<s:iterator >
<s:iterator >
<td><s:property value="#list.dname"/></td>
<td><s:property value="#list.description"/></td>//list前面需要加#
<td><a οnclick="delete()">删除</a>
<td><a οnclick="update()">修改</a>
</s:iterator >
</s:iterator>
通过上面的双层迭代器可以迭代出存在list集合中的list中的元素,当然还有一种情况就是,llist集合中放map集合,也就是List<Map<E>>,如果是这样的话,如果想迭代出list集合中存的map集合中的元素,就应该这么迭代:
<s:iteraor value="#list">
<s:iterator value="top">
<s:property value="key"/>
<s:property value="value.dname"/>//map不用加#
</s:iterator>
</s:iterator>
说到这,我们也把最后一种情况表述一下,那就是map集合中放着list集合,也就是Map<List<E>>,那像这样的存储方式的话就应该像下面这样的方式去迭代:
<!--map中含有list-->
<s:iterator value="#map">
<s:property value="key"/>
<!--该迭代就是一个list-->
<s:iterator value="value">
<s:property value="dname"/>
<s:property value="description"/>
</s:iterator>
</s:iterator>
所以在不同的集合中和不同的集合组合中,要通过不一样的迭代组合才能很好地遍历出所存储的元素,本次分享就到这里。