1. 程式人生 > >Jstl標籤迴圈輸出Map中的資料

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的屬性了。