2011-12-20 141 views
4

我有一个Map,其键值和自定义类。关键类被称为Position和实例化具有两个int(例如new Position(2, 4)FreeMarker:检查地图值是否为空

我摆脱这个职位类别,为了与Freemarker的使用转换的映射到SimpleHash。我现在有一个SimpleHash,其关键是一个字符串重新映射位置值(例如"2 4"),其值是nullLot(自定义)类。

在我需要检查,如果某一项目在SimpleMap值(如map通过模板)为空或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> 

如何做到这一点?

回答

1

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

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

2.Just转换,入​​住成真/假支票。 这可以通过使用具有isNull(Object obj)函数的实用程序类来完成。

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

这里不需要定制实用程序。 FreeMarker有相当多的专用操作符来处理空值/缺失值(请参阅下面的答案)。 ('== true'检查也看起来很奇怪......)'utilClass.isNull'不能从缺失的关键字中指出null,因为它基本上只是得到'Map.get'返回的内容,即null '在这两种情况下。 – ddekany 2011-12-21 17:41:04