Freemarker-检查列表是否仅包含空字符串

时间:2019-06-19 16:06:22

标签: freemarker

我有一个列表,可能只有空字符串。

我的目标是创建一个if原因,在其中我可以识别列表是否仅包含空字符串。

当我尝试:

    if list?size gt 0, 

我总是进入if循环,因为列表不是空的,它包含空字符串。

这里有个例子:

所有字符串都可以为空(“”)。

    <#assign list = [string1, string2, string3, string4, string5]>

    <#if list contains not only empty strings >

    do some things 

    </#if>

输出应为:当列表不仅包含空字符串时,仅输入if循环。

有人知道这如何工作吗? (无需遍历整个列表并检查每个字符串)

2 个答案:

答案 0 :(得分:1)

但是,至少从FreeMarker 2.3.28开始,您必须遍历整个列表。为此编写一个函数:

<#function containsNonEmpty ls>
  <#list ls as i>
    <#if i != ''>
      <#return true>
    </#if>
  </#list>
  <#return false>
</#function>

也许您真正想要的是删除空元素,即使不是所有元素都为空。然后检查列表是否为空。在2.3.29中,您可以使用myList?filter(s -> s != '')

答案 1 :(得分:0)

您必须使用?has_content选中document

<#assign list1 = ["", " ", "s"]>

    <#list list1 as list>
    <#if list?has_content >
            ${list}

    </#if>

    </#list>

输出将为:s