布尔表达式 if false 不适用于 ??在自由标记中

问题描述 投票:0回答:1
<#function kafkaCacheBackupLoaderProfiles>
  <#assign profiles = []>
  <#if featureEnabled.createCacheLoader??>
    <#assign profiles = profiles + ["kafka-cache-loader"]>
  </#if>
  <#if featureEnabled.createBackupLoader!false>
    <#assign profiles = profiles + ["kafka-backup-loader"]>
  </#if>
<#return profiles?join(", ")> 

对于以下输入的输入:

"featureEnabled": {
   "createCacheLoader": true
}

代码返回:

kafka-cache-loader

"featureEnabled": {
            
}

代码返回:

<an empty profiles array>

"featureEnabled": {
   "createCacheLoader": false
}

代码返回:

kafka-cache-loader

  1. 它应该返回
    <an empty profiles array>
    ,因为 createCacheLoader 为 false
  2. 我尝试了
    <#if (featureEnabled.createCacheLoader)??>
    ,但结果与上面所示相同。

如果我们谈论另一个表达方式:

<#if featureEnabled.createBackupLoader!false>
代码按预期工作,即如果
createBackupLoader
false or null
它不会打印
kafka-backup-loader
。如果
true
则打印
kafka-backup-loader

我想我在这里遗漏了一些概念。

freemarker
1个回答
0
投票

我认为你应该使用它:

<#if (featureEnabled.createCacheLoader)?has_content&&featureEnabled.createCacheLoader>
?has_content 判断变量是否为空

© www.soinside.com 2019 - 2024. All rights reserved.