说我的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的方法调用的结果也被视为缺失变量(同样,假设您使用了一些常用的对象包装器)。请参阅常见问题解答中的更多内容。
但是我仍然没有得到如何让它工作的答案,如果可以的话。
答案 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或为空,结果将为空。