FreeMarker:需要一个散列,但这已计算为一个序列

Ale*_*bak 3 java freemarker

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

\n
 <td>${repo.getRepoWords().size()}</td>\n
Run Code Online (Sandbox Code Playgroud)\n

方法 getRepoWords 是:

\n
 public HashSet getRepoWords() {\n     return repoWords;\n }\n
Run Code Online (Sandbox Code Playgroud)\n

结果我看到了这个异常

\n
\n

FreeMarker 模板错误(DEBUG 模式;在生产中使用 RETHROW!):\n对于“.” 左侧操作数:需要一个散列,但其计算结果为\na序列(包装器:ftSimpleSequence):==> repo.getRepoWords() [在\n模板“repositories/detail.ftl”第 24 行第 23 列] - --- FTL\n堆栈跟踪(“~”表示与嵌套相关): - 失败于:\n${repo.getRepoWords().size()} [在模板“repositories/detail.ftl”\nat 第 24 行中,第 21 列] ~ 通过以下方式到达:#nested [在第 20 行第 1 列宏“page”中的模板\n“layouts/common.ftl”中] ~ 通过以下方式到达\n:@c.page title="\xd0\x93\ xd0\xbb\xd0\xb0\xd0\xb2\xd0\xbd\xd0\xb0\xd1\x8f\xd1\x81\xd1\x82\xd1\x80\xd0\xb0\xd0\xbd\xd0\xb8\xd1\ x86\xd0\xb0" [在模板\n"repositories/detail.ftl"第 2 行第 1 列] ---- Java 堆栈跟踪\n(对于程序员): ---- freemarker.core.NonHashException:[ ...\n异常消息已打印;请参阅上面...] at\nfreemarker.core.Dot._eval(Dot.java:48) at\nfreemarker.core.Expression.eval(Expression.java:83) at\nfreemarker.core.MethodCall._eval(MethodCall .java:58) at\nfreemarker.core.Expression.eval(Expression.java:83) at

\n
\n

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

\n

soo*_*man 6

?size我建议你像下面这样使用。请检查文档

${repo.repoWords?size}
Run Code Online (Sandbox Code Playgroud)