Java FreeMarker:检查映射值是否为空
我有一个映射,它的键和值以及自定义类。键类称为Java FreeMarker:检查映射值是否为空,java,templates,freemarker,Java,Templates,Freemarker,我有一个映射,它的键和值以及自定义类。键类称为Position,并用两个int(例如newposition(2,4))实例化 我去掉了这个Position类,并将映射转换为一个SimpleHash,以便与Freemarker一起使用。我现在有了一个SimpleHash,它的键是一个字符串,用于重新映射位置值(例如“2 4”),它的值是null或Lot(自定义)类 在模板中,我需要检查SimpleMap中给定项的值(作为map传递)是null还是Lot实例 <#list ma
Position
,并用两个int(例如newposition(2,4)
)实例化
我去掉了这个Position类,并将映射转换为一个SimpleHash
,以便与Freemarker一起使用。我现在有了一个SimpleHash
,它的键是一个字符串,用于重新映射位置值(例如“2 4”
),它的值是null
或Lot
(自定义)类
在模板中,我需要检查SimpleMap中给定项的值(作为map
传递)是null还是Lot实例
<#list mapMinY..mapMaxY as y>
<tr>
<#list mapMinX..mapMaxX as x>
<td>
<div>
<!-- Check if map[x + " " + y] is null -->
${x}, ${y}
</div>
</td>
</#list>
</tr>
</#list>
${x},${y}
如何做到这一点?因为freemarker在涉及空值时有点奇怪,所以有两种方法可以解决它。 1.将其视为缺失值:
${map[x + " " + y]!}
do Stuff
${map[x + " " + y]!}
2.只需将该支票转换为真/假支票即可。
这可以通过使用带有isNull(objectobj)函数的实用程序类来实现
utilClass.isNull(map[x + " " + y])==true
使用
?
操作符
<#if map[x + " " + y]??>It's not null<#else>It's null or missing</#if>
它不是空的它是空的或丢失的
另请参见。此处不需要自定义实用程序。FreeMarker有许多专用运算符用于处理空值/缺失值(请参见下面的答案)。(检查
==true
看起来也很奇怪…)utilClass.isNull
也无法区分null和缺少的键,因为它基本上只获取Map.get
返回的内容,在这两种情况下都是null
。