FreeMarker,在循环中获取Map集合key值遇到的问题


前言

项目中使用的FreeMarker版本为2.3.30,在获取后端Map集合中的数据时,发现循环取出的Key值内包含Map集合本身的方法,希望大家在使用FreeMarker获取Map集合数据时避免这个问题。


一、问题详情

数据封装在一个Map集合中,key值是String类型,value是一个List集合。
使用ModelMap把数据交给视图控制器,进行前端页面生成。
最开始在模板中使用以下代码进行取值:

<#list map?keys as key> 
    ${map[key]}
</#list>

发现页面上没有正确显示数据,在debug过程中,确认后台数据封装没问题,于是在前端页面上单独对Map集合的key值进行循环打印,如下图:
循环出来的key值
仅“sku2”和“sku430”是我所需要的key值,其他都是Map对象内自带的方法。

二、问题处理

为了明确告诉FreeMarker我要从Map集合中取什么值,在传递数据的时候,通过Map对象的keySet()方法将key值集合一并传递。

<#list keys as key>
	<tr>
		<td>${key}</td>
		<#list result[key] as val>
			<td>${val}</td>
		</#list>
	</tr>
</#list>

循环key值集合的时候,通过key值获取Map集合的value内容。
稳妥起见,最好对key值集合和Map集合中取出的值进行一次非Null判断

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Freemarker遍历一个map集合,可以使用以下方法: 首先,创建一个mapmapkey只能是字符串。例如,我们创建了一个名为userMapmap,其包含两个键对:"1"对应"刘德华","2"对应"张学友"。 要获取map,可以使用${userMap["1"]}来获取key为"1"的,即"刘德华"。 要获取map的所有key,可以使用userMap?keys来获取一个包含所有key集合。然后,可以使用<#list>指令遍历这个集合,并通过userMap["${key}"]获取对应的。 例如,可以使用以下代码来遍历map集合并输出key和对应的: <#list userMap?keys as key> key: ${key} - value: ${userMap["${key}"]} </#list> 这样就可以依次输出每个key和对应的。同样的,也可以直接将userMap?keys作为参数传递给<#list>指令,来直接遍历mapkey。 另外,如果想要遍历map的values,可以使用userMap?values来获取一个包含所有value的集合。然后,可以使用<#list>指令遍历这个集合,直接输出每个。 例如,可以使用以下代码来遍历map的values并输出每个: <#list userMap?values as value> ${value} </#list> 这样就可以依次输出map的每个。<span class="em">1</span> #### 引用[.reference_title] - *1* [freemarker 遍历 map](https://blog.csdn.net/codeinglife/article/details/91808669)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值