如何用遍历Map集合中的对象值

muzipeng2008 2009-05-22 10:23:50
有个集合Map <key,value>,其中key里面封装不同的商品种类(包括food,book),value是商品的名称的集合NameList,集合中是商品的bean(id,price).
现要求在jsp页面中显示遍历出来每个bean的属性值(id,price)不知怎样用 <c:foreach>来遍历,请各位老大多多帮忙。
...全文
22320 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
philbert ryan 2009-05-22
  • 打赏
  • 举报
回复

<c:forEach items="${map}" var="m">
<!-- 只显示 book 类。这句代码"${m.key== 'book'}"决定的-->
<c:if test="${m.key== 'book'}">
<c:forEach items="${m.value}" var="product">
ID:<c:out value="${product.id}"></c:out> 价格:<c:out value="${bean.price}"></c:out>
<br />
</c:forEach>
</c:if>
</c:forEach>
  • 打赏
  • 举报
回复
一个 Map 被 c:forEach 迭代出来之后是个 Map.Entry 对象,所以用 xx.key 和 xx.value 就可以得到键和值了。

因为 Map.Entry 中就有 getKey 和 getValue 这两个方法。
muzipeng2008 2009-05-22
  • 打赏
  • 举报
回复
辛苦啦,谢谢
muzipeng2008 2009-05-22
  • 打赏
  • 举报
回复
我想显示其中某一类商品的信息该怎么做呢 ?
Johnson_Hong 2009-05-22
  • 打赏
  • 举报
回复
楼上的辛苦了。就是这个样
philbert ryan 2009-05-22
  • 打赏
  • 举报
回复
又写错了


<c:forEach items="${map}" var="m">
<c:forEach items="${m.value}" var="product">
ID:<c:out value="${product.id}"></c:out> 价格:<c:out value="${product.price}"></c:out> <br />
</c:forEach>
</c:forEach>
philbert ryan 2009-05-22
  • 打赏
  • 举报
回复

<c:forEach items="${map}" var="m">
<c:forEach items="${m.value}" var="product">
ID:<c:out value="${bean.id}"></c:out> 价格:<c:out value="${bean.price}"></c:out> <br />
</c:forEach>
</c:forEach>
philbert ryan 2009-05-22
  • 打赏
  • 举报
回复

<c:forEach items="${map}" var="m">
<c:forEach items="${m.value}" var="product">
ID:<c:out value="${bean.id}"></c:out> 价格:<c:out value="${bean.price}"></c:out> <br />
</c:forEach>
</c:forEach>
wind_rosebush 2009-05-22
  • 打赏
  • 举报
回复
试试这个...


<c:forEach items="${map.food}" var="f">
${f.id }或者${f.price }
</c:forEach>
muzipeng2008 2009-05-22
  • 打赏
  • 举报
回复
谢谢啦,问题已经解决啦,是我自己的原因造成的。

谢谢大家...
muzipeng2008 2009-05-22
  • 打赏
  • 举报
回复
还是都显示
Dream_gril 2009-05-22
  • 打赏
  • 举报
回复
<c:if test="${m.key eq '企业'}">
Dream_gril 2009-05-22
  • 打赏
  • 举报
回复
${m.key} eq '企业'
muzipeng2008 2009-05-22
  • 打赏
  • 举报
回复

我改过也是都显示出来,

我就想显示 key:“企业” value中所有的数据,

但是他把其他key的value中的数据也显示出来啦!
muzipeng2008 2009-05-22
  • 打赏
  • 举报
回复
真的吗?我是想显示其中一类,但是他把所有的数据都显示出来啦!

Johnson_Hong 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 muzipeng2008 的回复:]
我也是跟您这样做的啊

<c:forEach items="${requestScope.MapNews}" var="m">

<c:if test="${m.key}=='企业'}">

<c:forEach items="${m.value}" var="product" >

<c:out value="${product.title1}"> </c:out> <br />

/c:forEach>

</c:if>

</c:forEach>

他把所有的结果都显示出来啦!
谢谢...
[/Quote]
写错了吧
muzipeng2008 2009-05-22
  • 打赏
  • 举报
回复
4楼是对的,我也是照着做的啊,怎么个、把结果都显示出来了啊!
我是新手,请多多包涵。
qiheia 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 rengh8288 的回复:]
HTML code<c:forEachitems="${map}"var="m"><c:forEachitems="${m.value}"var="product">ID:<c:outvalue="${product.id}"></c:out>价格:<c:outvalue="${product.price}"></c:out><br/></c:forEach></c:forEach>
[/Quote]

4楼是对的,要用2重循环,就可以遍历出来了。。
muzipeng2008 2009-05-22
  • 打赏
  • 举报
回复
我也是跟您这样做的啊

<c:forEach items="${requestScope.MapNews}" var="m">

<c:if test="${m.key}=='企业'}">

<c:forEach items="${m.value}" var="product" >

<c:out value="${product.title1}"></c:out> <br />

/c:forEach>

</c:if>

</c:forEach>

他把所有的结果都显示出来啦!
谢谢...

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧