Freemarker - проверяет логическое значение - PullRequest
0 голосов
/ 07 ноября 2018

Какой правильный синтаксис для проверки, является ли значение логического значения из данных формы в FreeMarker моим кодом:

<#if "${form.allStores}" !false>
        <@displayRow label="Receiving Stores" value="All Stores" />
    <#elseif "${form.storesReceiving}" == false || "${form.storesReceiving}"?has_content>
        <@displayRow label="Receiving Stores" value="No Stores"/>
    <#else>

Я получаю эту ошибку:

Could not prepare mail; nested exception is freemarker.core._MiscTemplateException: Can't convert boolean to string automatically, because the "boolean_format" setting was "true,false", which is the legacy default computer-language format, and hence isn't accepted. --

1 Ответ

0 голосов
/ 07 ноября 2018

Freemarker имеет , затем функционирует с версии 2.3.23:

<@displayRow label="Receiving Stores" value="${form.allStores?then('All Stores', 'No Stores')}"/>

Используется как booleanExp? Then (whenTrue, когда False)

Также как и в Java, вы можете использовать оператор ! для отрицания:

<#if !form.allStores> 
    <@displayRow label="Receiving Stores" value="No Stores"/>

Тогда логическое значение может быть только true / false, поэтому не нужно elseif:

<#else>
    <@displayRow label="Receiving Stores" value="All Stores" />
</#if>

Вызывается логическим оператором НЕ. Используйте для изменения логического состояния своего операнда. Если условие истинно, то оператор логического НЕ будет делать ложь.

Также предпочитаю использовать первое положительное условие как:

<#if form.allStores> 
    <@displayRow label="Receiving Stores" value="All Stores" />
<#else>
    <@displayRow label="Receiving Stores" value="No Stores"/>
</#if>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...