Freemarker 将布尔变量展开为字符串“0”;“真的”;或;假;

Freemarker 将布尔变量展开为字符串“0”;“真的”;或;假;,freemarker,Freemarker,在freemarker模板中,我想将布尔变量展开为如下字符串: <#assign booleanVar = "test".isEmpty() /> state: ${booleanVar} <#-- this throws an exception! --> 到目前为止,我发现实现这一目标的唯一途径是: state: <#if booleanVar>true<#else>false</#if> 状态:truefalse 有更简单的

在freemarker模板中,我想将布尔变量展开为如下字符串:

<#assign booleanVar = "test".isEmpty() />
state: ${booleanVar} <#-- this throws an exception! -->
到目前为止,我发现实现这一目标的唯一途径是:

state: <#if booleanVar>true<#else>false</#if>
状态:truefalse
有更简单的方法吗

booleanVar?string("true", "false")
虽然如此,


应该可以正常工作。

从FreeMarker 2.3.20开始,如果您想打印真/假(因为您正在生成JavaScript或类似的内容),请编写
${booleanVar?c}
?c
表示“计算机格式”,也用于数字)
${booleanVar?string}
是危险的,因为有人可以将
boolean_格式设置为
yes、no
或其他。。。(顺便说一句,在这种情况下,
${booleanVar}
在2.3.20中也会起作用,您会得到
yes
no


请参阅:

如果我这样做,我会得到:“freemarker.core.InvalidReferenceException:表达式booleanVar$string未定义”。我重新阅读了该链接。。。把美元换成了?例如。我不知道freemarker:)从freemarker 2.3.20开始,您应该使用
${booleanVar?c}
。仅仅写
${booleanVar?string}
是危险的,因为默认格式可以更改。更多细节请参见我的答案。
booleanVar?string("true", "false")
booleanVar?string