带布尔变量的Freemarker宏

问题描述 投票:0回答:1

我正在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 
macros freemarker boolean-expression
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.