如何在自由标记中检查空列表

2022-09-01 05:01:58

假设我的Java代码有,我把它传递给我的模板文件。List<String> listS =null

现在我想确保.if list has some data then only do something

我试过

<#if listS = null>
AND
<#if !listS>
AND
<#if listS?size=0>

但这些似乎都没有奏效。我有一些逻辑,我的java代码;通过它,如果某个条件为真,那么我这个并填充它。newlistS

因此,我需要知道在我的模板文件中是否已经填充或仅为空。listS

我该怎么做?谢谢。

编辑:另外,我有一个结构列表,每个结构都包含这个列表S(填充与否是一个不同的问题),并且我正在传递整个结构列表,因此将布尔值与我的结构列表一起传递给模板文件是不可能的,因为我必须在每个列表中遍历,并且我想在模板文件本身中进行遍历。

编辑2:对于那些知道什么是Java null的人,FreeMarker 2.3.x将它们视为缺失值。简单地说,模板语言不知道 null 的概念。例如,如果你有一个具有 maidenName 属性的 Bean,并且该属性的值为 null,那么就模板而言,这与根本没有这样的属性是一样的(假设你没有将 FreeMarker 配置为使用一些极端的对象包装器,也就是说)。返回 null 的方法调用的结果也被视为缺少的变量(同样,假设您使用了一些常用的对象包装器)。有关详细信息,请参阅常见问题解答。

自由标记手册

但是我仍然没有得到如何让它工作的答案,如果可以的话。


答案 1

使用内置has_content

<#if list5?has_content>

答案 2

您还可以使用缺失值测试运算符,如下所示:

<#if listS??>
    <#list listS.stuff as stuff>
        ${stuff.value}
    </#list>
</#if>