freemaker中的map遍历

前两天在freemaker中遇到一个问题,怎么遍历一个Map<List<Object>的map呢?

网上找个很多都是类似下面的:

 <#if map?exists>
       <#list map?keys as key>
            ${key}<br>
            ${map.get(key)}
       </#list>
 </#if>

但是,调试了好久,发现其实这样写其实是错的,后来查询官方文档发现是这样的:

<#assign h = {"name":"mouse", "price":50}>
<#assign keys = h?keys>
<#list keys as key>${key} = ${h[key]}; </#list>

也就是获取map中对应key的值是通过[]的形式获取的,而不是通过get方法!!!

所以最后,我终于实现遍历了Map<List<Object>>

<#if secondLevelClassificationMap ? exists>
    <#list secondLevelClassificationMap?keys as key>
          <div id="pill_${key}">
                 <#list secondLevelClassificationMap[key] as secondLevel>
                       <a href="/cms/drugClassification/drugs/${secondLevel.name}">${secondLevel.name}</a>
                 </#list>
          </div>
    </#list>
</#if>

终于搞定!

时间: 2024-11-14 10:19:22

freemaker中的map遍历的相关文章

freemaker中取map的值

freemaker取map数据时,先判断map是否为null值   用assign标签获取${}取值即可 <#if map??&&(map?size gt 0)> <#assign value = (map['key'])> 或 ${examInfoMap['key']} </#if> 原文地址:https://www.cnblogs.com/xiaotong1223/p/9197605.html

JavaScript中的数组遍历forEach()与map()方法以及兼容写法

原理: 高级浏览器支持forEach方法 语法:forEach和map都支持2个参数:一个是回调函数(item,index,list)和上下文: forEach:用来遍历数组中的每一项:这个方法执行是没有返回值的,对原来数组也没有影响: 数组中有几项,那么传递进去的匿名回调函数就需要执行几次: 每一次执行匿名函数的时候,还给其传递了三个参数值:数组中的当前项item,当前项的索引index,原始数组input: 理论上这个方法是没有返回值的,仅仅是遍历数组中的每一项,不对原来数组进行修改:但是我

java 中map遍历的四种方法和优缺点

/** * 在for-each循环中使用entries来遍历 * 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用 * 如果遍历的是一个空的map,会报数组越界 ,java5引入,不兼容老版本 * @param map */ public void methodOne(Map<Integer, Integer> map){ for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out

Java Map遍历方式的选择

1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keySet拿到的只是key的集合,针对每个key,都要去Map中额外查找一次value,从而降低了总体效率.那么实际情况如何呢? 为了解遍历性能的真实差距,包括在遍历key+value.遍历key.遍历value等不同场景下的差异,我试着进行了一些对比测试. 2. 对比测试 一开始只进行了简单的测试,但结果却表明k

Java之Map遍历方式性能分析:ketSet与entrySet

keySet():将Map中所有的键存入到Set集合中.因为set具备迭代器,所以可以以迭代方式取出所有的键,再根据get方法获取每一个键对应的值,其仅能通过get()取key. entrySet(): 返回此映射中包含的映射关系的 Set 视图,格式为Set<Map.Entry<K,V>>, Map.Entry表示映射关系,迭代后可以e.getKey().e.getValue()取key和value,返回的是Entry接口 . keySet()方式 Set<String&g

list中含有map的排序问题

Map的种类 在Java中,Map的主要作用是存储键值对.由于是根据键得到值,所以不允许键重复.它主要有如下几个类别: HashMap: 最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的.HashMap最多只允许一条记录的键为Null;允许多条记录的值为Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致.如果需要同步,可以用Collections的sy

Java中读取Map的两种方法对比

引言: 在Java中Map的使用非常频繁,我们经常会需要对Map进行遍历和读取,下面将展示两种遍历的方法以及简要分析. 1.  遍历Map方法A Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val =

Java中的Map List Set等集合类

Map List Set等集合类: 一.概述 在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父子关系: +Collection 这个接口extends自 --java.lang.Iterable接口 ├+List(接口 代表有序,可重复的集合.列表) │├ ArreyList     (Class 数组,随机访问,没有同步,线程不安全) │├ Vector        (Class  数组                   同步        线程全) │

由实现JavaScript中的Map想到的

项目中要用到JavaScript中的Map数据类型,它不像JDK那样有自带的,怎么办?搜了找到一个不错的(http://darkmasky.iteye.com/blog/454749).用这个可以满足项目中要求.在找的过程中,发现这么个轻量级的实现.http://www.iteye.com/topic/196610帖子中,二楼myy的回复内容.应该说这个简单地实现可以满足我的一些需求,但它少了size方法. 在这个简单实现的基础上,自己能不能加一个size方法呢?而不地通过封装Array那样的重