如何在freemarker中检查空列表

时间:2012-09-24 12:45:53

标签: java null freemarker

说我的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代码有一些逻辑;通过它,如果某些条件为真,那么我new这个listS并填充它。

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

我该怎么做?感谢。

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

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

Freemarker Manual

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

3 个答案:

答案 0 :(得分:58)

使用内置的has_content

<#if list5?has_content>

答案 1 :(得分:7)

您也可以使用missing value test operator

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

答案 2 :(得分:0)

<#list myList![] as element>
   <#--  do something per element -->
</#list>

如果列表为null或为空,结果将为空。