Jstl標籤迴圈輸出Map中的資料
閒來沒事寫個小知識:
直接上例子:
假如有一個類:User(使用者)
一個User有好多屬性簡單舉例幾個:id, name(姓名), address(地址).....
另一個類:Car(小車),其有幾個簡單屬性: id, color(顏色), producers(廠家).......
假如有這樣的情景,一個人擁有好幾輛Car。
現在要求將一群人顯示到頁面,每個人的車也顯示到頁面。
Map<User, List<Car>> userInfoMap=new HashMap<User, List<Car>>(); //注意此處Map中儲存的結構
...................例如有3個User物件:user1, user2,user3
...................例如user1擁有3兩車:u1Car1, u1Car2,u1Car3, 其它兩個使用者也類似
....................List<Car> u1CarList=new ArrayList<Car>();
....................u1CarList.add(u1Car1);
....................u1CarList.add(u1Car2);
....................u1CarList.add(u1Car3);
....................其它類似
userInfoMap.put(user1, u1CarList);
userInfoMap.put(user2, u2CarList);
userInfoMap.put(user3, u3CarList);
request.setAttribute("userInfoMap",userInfoMap); //放到request中
------------------下邊就jsp頁面如何取出
<c:if test="${!empty userInfoMap}">
<c:forEach items="${userInfoMap}" var="obj">
${obj.key.name}<br/> //注意此處的寫法key
${obj.key.address}<br/>
<c:if test="${!empty obj.value}">
<c:forEach items="${obj.value}" var="carObj"> //注意此處的寫法value,也是第二次要迴圈的List
${carObj.color}<br/>
${carObj.producers}<br/>
<c:forEach>
</c:if>
</c:forEach>
</c:if>
第一層迴圈式取key值,即每個User物件,然後就可以取該物件的屬性值了。
第二層迴圈是取key對應的value,此處value是一個集合物件,集合中的每個元素是一個Car物件,同樣就可以取出Car的屬性了。