FreeMarker:检查map值是否为null

时间:2011-12-20 11:50:45

标签: java templates freemarker

我有一个Map,其键和值以及自定义类。密钥类名为Position,并使用两个int进行实例化(例如new Position(2, 4)

我摆脱了这个Position类,并将地图转换为SimpleHash,以便与Freemarker一起使用。我现在有一个SimpleHash,其键是字符串重新映射位置值(例如"2 4"),其值为nullLot(自定义)类。

在模板中,我需要检查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>

怎么做?

2 个答案:

答案 0 :(得分:8)

使用??运算符。

<#if map[x + " " + y]??>It's not null<#else>It's null or missing</#if>

另见the related part of the Manual

答案 1 :(得分:1)

因为当涉及到空值时,freemarker有点奇怪,有两种方法可以解决它。  1.将其作为缺失值:

${map[x + " " + y]!}
   do Stuff
${map[x + " " + y]!}

2.只需将支票转换为真/假支票。 这可以通过使用带有isNull(Object obj)函数的实用程序类来完成。

utilClass.isNull(map[x + " " + y])==true