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


          


你可能感兴趣的:(c,jsp,list,user,存储)