在FreeMarker中遍历嵌套的HashMap

时间:2016-05-28 15:32:24

标签: java hashmap freemarker

我需要在FreeMarker中遍历以下数据结构

final Map<String,Map<String,List<Person>>> root = fillMap();

为了简化,想象一下这是一种分类学,我有“大陆”,“国家”,“人”,人在哪里

class Person{
  String name;
  String id;
}

如果您想要更多说明:

您可以在Java中执行以下操作(专注于var名称)

Map<String,List<Person>> countriesForContinent = root.get(“Africa”);

List<Person> personsForCountry = countriesForContinent.get(“Kenya”);

在FreeMarker中,我需要能够列出地图中的每个大陆;然后是每个大洲,每个国家;然后是每个国家,每个人。

我的HTML基本上是一些标签(每个大陆一个),在每个标签上,我有国家/地区部分,在每个部分中我列出了属于该国家/地区的人。

困难

我对列表标签内的内容有困难。我知道例如root as continent没有意义;但我不知道如何解决它。

<#list root as continent >
  ${continent}
  <#list continent as country >
    ${country}
    <#list country as person >
      ${person.name} ${person.id}
    </#>
  </#>
</#>

1 个答案:

答案 0 :(得分:0)

在FreeMarker模板中,您无法列出Map - s,只能列出其键(或其值)。所以你会有这样的事情:

<#list root?keys as continentName>
  ${continentName}
  <#list root[continentName] as country >
    ...
  </#list>
</#list>