我正在尝试使用Freemarker中的 com.google.common.collect.Multimap< String,Foo> 。
在Multimap中,对于地图中的每个键,您将返回Collection。
我尝试了以下但是没有用:
爪哇:
context.put("itemsByCategory", itemsByCategory);
FreeMarker的:
<#list exclusiveItems?keys as cat>
${cat}<br/>
<#assign items = exclusiveItems[cat]>
<#list items as item>
${item.id}
</#list>
</#list>
我遇到以下异常。它似乎将物品视为标量,虽然它实际上是一个集合。
?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
答案 0 :(得分:2)
我找到了一个有效的解决方案。
我没有像在示例中那样传入Multimap实例(“itemsByCategory”),而是将Multimap转换为原始Map&gt;然后使用它可以与上面的FreeMarker片段保持一致。
希望这有助于某人。
答案 1 :(得分:1)
你说它将值视为标量,但它似乎将其视为一种方法。如果你只列出钥匙怎么办?其中是否有一些方法名称?因为那时你的问题肯定是你没有将你正在使用的simpleMapWrapper
的{{1}} JavaBean属性设置为BeansWrapper
。
答案 2 :(得分:0)
您应该查看keySet
和asMap
。
keys
方法将提供可能(可能会)包含重复项的密钥集合。即使键被使用了两次,这也会为每个值返回一个键。 keySet
提供了一系列唯一键。