java - Freemarker:如何使用 Multimap(或列表 map )

标签 java freemarker multimap

我正在尝试使用来自 Freemarker 的 com.google.common.collect.Multimap

在 Multimap 中,对于 map 中的每个键,您都会返回 Collection。

我尝试了以下方法,但没有用:

Java:

context.put("itemsByCategory", itemsByCategory);

自由标记:

<#list exclusiveItems?keys as cat>
    ${cat}<br/>
    <#assign items = exclusiveItems[cat]>
    <#list items as item>
        ${item.id}
    </#list>
</#list>

我得到以下异常。它似乎将 Items 视为标量,尽管它实际上是一个 Collection。

?size is unsupported for: freemarker.ext.beans.SimpleMethodModel
The problematic instruction:
----------
==> list items as item [on line 61, column 49 in email/foo/foo-html.ftl]
----------

Java backtrace for programmers:
----------
freemarker.template.TemplateModelException: ?size is unsupportefor:freemarker.ext.beans.SimpleMethodModel

最佳答案

我找到了一个有效的解决方案。

我没有像示例中那样传入 Multimap 实例(“itemsByCategory”),而是发现将 Multimap 转换为原始 Map> 然后使用它与上面的 FreeMarker 代码段保持不变。

希望这对某人有帮助。

关于java - Freemarker:如何使用 Multimap(或列表 map ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7902912/

相关文章:

templates - FreeMarker 模板 : how to use combined conditions in <#if> </#if> block?

java - ParseException:遇到列表类型的 "/"content.xml

java - 将 guava multi map 值转换为列表

java - 使用Java Stream将List和String的列表转换为Map

java - 将 Collection<Foo> 映射到 MultiMap<A, B> 的惯用方法是什么?

java - Eclipse 编译器说在注释中的枚举字段数组的情况下属性未定义

java - JAR list 中的默认参数

java - 从另一个匿名类访问匿名类中的 "nameless"Jbutton?

java - Activity 的 Intent 过滤器必须包含 android.intent.action.MAIN 操作

freemarker - 在 freemarker 中重复一个字符串 n 次