1. 程式人生 > >Freemarker中的null判斷,小坑一枚

Freemarker中的null判斷,小坑一枚

上次寫到,在Freemarker中日期轉換,可以提取成工具方法。主要是Freemarker對null的處理方式,非常坑爹。只要一個物件或物件的屬性為null,就報錯,雖然不影響介面顯示,但控制檯和日誌總是列印“錯誤資訊”,很是不爽。所以,想寫方法判斷物件是否為null,再做正確的顯示。

    上次寫的2個Freemarker函式,實際過程中只用到了第1個,正常。
把int型別的日期轉換成字串
    <#function number_to_ymdhms date>

 <#if date != null>

   <#setting datetime_format="yyyy-MM-dd hh:mm:ss"/>

    <#return date?number_to_datetime/>

 </#if>

 <#return ""/>

</#function>

把date型別的日期轉換成字串
   <#function date_to_ymdhms date>

 <#if date != null>

    <#return date?string('yyyy-MM-dd hh:mm:ss')/>

 </#if>

 <#return ""/>

</#function> 

後來,專案中用到了第2個方法,但是日期沒有顯示出來,debug發現date不是null,這是為什麼呢?

最後確定,date != null 有問題。

結論:number型別(當然包number型別的日期),可以與null比較,即date!=null.
而物件型別,不能直接與null進行比較,應該用date?exists (複數) 。

date型別比較:

<#function date_to_ymdhms date>

 <#if date?exists>

    <#return date?string('yyyy-MM-dd hh:mm:ss')/>

 </#if>

 <#return ""/>

</#function>