jsp 从后台Map中取值
在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> 格式
以上两种方式都是可以的
上一篇: 21天学习android开发教程之XML解析与生成
下一篇: js中获取对象的属性名和值