Как проверить, что массив имеет размер> 1 в Apache FreeMarker? - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь реализовать шаблон с объектом, который может быть во множественном числе.

Например: "Есть / есть n собак".Когда я пытался There <#if dogNames?size>1>is<#else>are</#if> dogNames?size dog<#if dogNames?size>1>s</#if>, я получал исключение

freemarker.core.NonBooleanException: для условия "#if": ожидалось логическое значение, но оно было оценено как число (wrapper: ftSimpleNumber): ==> dogNames? size

т.е. есть проблема с угловой скобкой, используемой для сравнения.

В этом блоге сказано, что двойных кавычек достаточно дляизбежать скобки, но мне не удалось сделать это на Java.Когда я объявил это так

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

и вызвал api freemarker, я получил исключение

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 голосов
/ 25 июня 2018

Вы можете написать <#if dogNames?size gt 1>. (См. https://freemarker.apache.org/docs/dgui_template_exp.html#dgui_template_exp_comparison)

...