Freemarker: iterating a nested list into a hash

I want to iterate over a list nested in a map, the data structure is similar:

Map<Integer, List<Integer>> groups = new TreeMap<>()
// Some code else to put values into groups ...

Freemarker Template:

<#list groups?keys as groupKey>
    ${groupKey}    // It OK here.
    <#list groups[groupKey] as item>  // Exception threw here, detail message is pasted below
        ${item}
    </#list>
</#list>

Detailed exception message:

FreeMarker pattern error: For the "... [...]" left operand: the expected sequence or string or something automatically converted to a string (number, date or boolean value), but this evaluates to extended_hash (wrapper: ftSimpleHash): ==> groups

So what is the problem?

PS

I tried groups.get(groupKey)instead groups[groupKey], it throws a new exception stack:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
java.lang.String.compareTo(String.java:108)
java.util.TreeMap.getEntry(TreeMap.java:346)
java.util.TreeMap.get(TreeMap.java:273)
freemarker.template.SimpleHash.get(SimpleHash.java:160)
freemarker.core.Dot._eval(Dot.java:40)
freemarker.core.Expression.eval(Expression.java:76)
+4
source share
2 answers

, FTL Map. "", String -s. ( ?keys , BeansWrapper... .) , FTL , (a List ), , , .

Java API-, get Dev-. ( FTL , , , ...)

: 2.3.22 ?api Java API , myMap?api.get(nonStringKey). (. api_builtin_enabled : http://freemarker.org/docs/ref_builtins_expert.html#ref_buitin_api_and_has_api). , , Java- , Integer, Java, myMap?api.get(myNumericalKey?int).

+6

:

<#list groups?keys as groupKey>
    ${groupKey}
    <#list groups.get(groupKey) as item>
        ${item}
    </#list>
</#list>
+1

All Articles