37

假设我的 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 的方法调用的结果也被视为缺失变量(再次假设您使用一些常用的对象包装器)。在常见问题解答中查看更多信息。

自由标记手册

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

4

3 回答 3

62

使用has_content内置:

<#if list5?has_content>
于 2012-09-24T13:04:47.577 回答
7

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

<#if listS??>
    <#list listS.stuff as stuff>
        ${stuff.value}
    </#list>
</#if>
于 2013-04-04T18:34:24.193 回答
5
<#list myList![] as element>
   <#--  do something per element -->
</#list>

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

于 2018-02-16T03:11:54.627 回答