关于jsp页面中iterator对于各种List的迭代

在之前写的一些项目中,在很多时候我们只是在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>

所以在不同的集合中和不同的集合组合中,要通过不一样的迭代组合才能很好地遍历出所存储的元素,本次分享就到这里。

原文地址:https://www.cnblogs.com/AsherBlog/p/5423826.html