在之前寫的一些項目中,在很多時候我們只是在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>
所以在不同的集合中和不同的集合組合中,要通過不一樣的迭代組合才能很好地遍歷出所存儲的元素,本次分享就到這里。