我正在Spring和Freemarker应用程序中使用Freemarker 2.3.28。让布尔运算符使用freemarker宏时遇到麻烦。
我从服务器端获取JSON,该JSON具有一个属性为boolean(已通过JS typeof函数验证)。我使用以下方法将这些数据放在模板中:
<script id="data-template" type="text/x-handlebars-template">
<@customData var1="{{var_id}}" var2="{{var_label}}" var3="{{var_enabled}}" />
</script>
此表达式中的var3以布尔值形式出现,我想将其用于某些复选框表达式以使其处于选中状态或未选中状态。
现在,当我按如下所示将其用作宏表达式时,它没有将var3用作布尔值:
<#macro customData var1 var2 var3>
<div class="checkbox">
<label><input type="checkbox" ${var3?string('checked="true"', ''} />Dummy Label</label>
</div>
</#macro>
当我使用?string时出现错误:
FreeMarker template error:
For "...(...)" callee: Expected a method, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> var3?string
如果我使用?那么它会给出错误:
FreeMarker template error:
For "?then(...)" left-hand operand: Expected a boolean, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> var3