欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jsp 从后台Map中取值

程序员文章站 2024-02-18 12:16:10
...

在jsp页面有的时候需要从后台传过来的Map中取特定值,并显示在页面上,网上有很多说怎么取值的,但是找了好久很多 都是讲的怎么循环取值,如果你需要在table中显示值那该怎么办呢?很多都没有讲,我把我的方法简单介绍下。

场景是这样的  下面是table的行数据

从后台controller返回分页信息,pageInfo.list是当前行数据,item.houseType是数据,但是这个是值(1或者2等等)并不是描述文字(类似这样1 支付宝 2 微信支付),但是显示的时候是要显示文字性描述的

下面的代码就是怎么来从map中取得文字显示的方法

<c:forEach  items="${pageInfo.list}" var="item">
<tr class="text-c">
    <td>${houseTypeEnumMap.get(item.houseType)}</td>
</tr>
</c:forEach>

但是这个里面有坑,那就是类型不匹配!!!!!明白这一点相信你就知道什么原因了。

许多人讲这个map的key是Long型的,这个可能不行

我的map是从枚举类型转换过来的,里面的key是int,描述是String,然后我就转成map<Long,String>传到前台,结果怎么也取不到文字描述

如果是后台传map<String,String>的,在jsp中用${houseTypeEnumMap.get(item.houseType)}也取不到值,因为item.houseType是int型的,类型不匹配也取不到。

最终想到的思路就是让行数据和map里的类型一致就可以取到文字。

1  map<String,String>   那就都转成string,jsp中

<c:set var="houseTypeKey" value="${fn:trim(item.houseType)}"/>  这样从int转成string了

后台的map转成map<String,String>格式

2   Map<Integer, String> 

jsp页面   <td>${houseTypeEnumMap.get(item.houseType)}</td> 

后台的map转成Map<Integer, String>  格式

 

以上两种方式都是可以的