您的位置:首页 > Web前端 > JavaScript

Jstl标签循环输出Map中的数据

2012-03-22 18:02 197 查看
闲来没事写个小知识:

直接上例子:

假如有一个类: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的属性了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: