如何检查该数组在Apache FreeMarker中的大小> 1?

时间:2018-06-25 15:17:06

标签: java apache templates freemarker

我正在尝试使用对象来实现模板,该对象可以是多个。

例如:“有n条狗。” 当我尝试There <#if dogNames?size>1>is<#else>are</#if> dogNames?size dog<#if dogNames?size>1>s</#if>时,我收到了异常

  

freemarker.core.NonBooleanException:对于“ #if”条件:应为布尔值,但这已计算为数字(包装器:f.t.SimpleNumber):   ==> dogNames?size

即尖括号用于比较时出现问题。

this blog中,据说双引号足以逃脱括号,但是在Java中我没有做到这一点。当我这样声明时

String template = "There <#if dogNames?size\">\"1>is<#else>are</#if> dogNames?size dog<#if dogNames?size>1>s</#if>";

并调用了freemarker api,我收到了异常

freemarker.core.ParseException: Syntax error in template ...:
Encountered "\">\"", but was expecting one of:
"."
".."
<DOT_DOT_LESS>
"..*"
"?"
"??"
"!"
"["
"("
">"
<TERMINATING_EXCLAM>

我正在使用freemarker 2.3.28,java 8

1 个答案:

答案 0 :(得分:2)

您可以写<#if dogNames?size gt 1>。 (请参见Docs