我有一个列表,可能只有空字符串。
我的目标是创建一个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循环。
有人知道这如何工作吗? (无需遍历整个列表并检查每个字符串)
答案 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