在之前写的一些项目中,在很多时候我们只是在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 onclick="delete()">删除</a> <td><a onclick="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 onclick="delete()">删除</a> <td><a onclick="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>
所以在不同的集合中和不同的集合组合中,要通过不一样的迭代组合才能很好地遍历出所存储的元素,本次分享就到这里。