FreeMarker:需要一个哈希,但这已经评估为一个序列

Posted

技术标签:

【中文标题】FreeMarker:需要一个哈希,但这已经评估为一个序列【英文标题】:FreeMarker: Expected a hash, but this has evaluated to a sequence 【发布时间】:2019-08-20 06:39:37 【问题描述】:

我知道同样的问题已经出现在这里。但不幸的是,它不能帮助我解决我的问题。我的 FreeMarker 模板中有 HashSet。我想在视图上显示 HashSet 的大小。为此,我有以下几点:

 <td>$repo.getRepoWords().size()</td>

getRepoWords 方法是:

 public HashSet getRepoWords() 
     return repoWords;
 

结果我看到了这个异常

FreeMarker template error (DEBUG mode; use RETHROW in production!): For "." left-hand operand: Expected a hash, but this has evaluated to a sequence (wrapper: f.t.SimpleSequence): ==&gt; repo.getRepoWords() [in template "repositories/detail.ftl" at line 24, column 23] ---- FTL stack trace ("~" means nesting-related): - Failed at: $repo.getRepoWords().size() [in template "repositories/detail.ftl" at line 24, column 21] ~ Reached through: #nested [in template "layouts/common.ftl" in macro "page" at line 20, column 1] ~ Reached through: @c.page title="Главная страница" [in template "repositories/detail.ftl" at line 2, column 1] ---- Java stack trace (for programmers): ---- freemarker.core.NonHashException: [... Exception message was already printed; see it above ...] at freemarker.core.Dot._eval(Dot.java:48) at freemarker.core.Expression.eval(Expression.java:83) at freemarker.core.MethodCall._eval(MethodCall.java:58) at freemarker.core.Expression.eval(Expression.java:83) at

我可以在 FreeMarker 模板中对 HashSet 使用 size() 方法吗?

【问题讨论】:

【参考方案1】:

我建议你使用?size,如下所示。请检查Document

$repo.repoWords?size

【讨论】:

以上是关于FreeMarker:需要一个哈希,但这已经评估为一个序列的主要内容,如果未能解决你的问题,请参考以下文章

执行 FreeMarker 时,以下已评估为 null 或缺失

ExtentReport : FreeMarker 模板错误:以下已评估为 null 或缺失:

FreeMarker 模板错误:以下已评估为 null 或缺失 |但不是真的

Freemarker“字符串到哈希转换”?

将对象列表传递给 Freemarker 然后循环

如何评估哈希冲突概率?