1. 程式人生 > >FreeMarker對null值的處理

FreeMarker對null值的處理

1.  !對輸出的空值做處理,只輸出無返回值

輸出name的值:${name}。如果name為null,就會報錯。

輸出name的值:${name!}。如果name為null,就不會報錯,什麼也沒輸出。(重點)

輸出name的值:${name!"預設值"}。如果name為null,就輸出”預設值”字串。(重點)

輸出name的值:${name!100}。如果name為null,就輸出100。

輸出user.name的值:${(user.name)!"預設值”},如果user或name為null,就輸出預設值。(重點)

輸出user.name的值:${user.name!"預設值”}

,如果user為null會報錯,如果name為null,就輸出預設值。

使用default內建函式來處理:${user.name?default('vakin')}  (較繁瑣)

2.  ??測試是否為null,返回boolean值 


product.color??將只測試color是否為null


(product.color)??將測試product和color是否存在null 


3.  freemarker中??和?的區別

??是判斷物件是否為空,例如:<#if object??>object物件不為空(即object存在)</#if>

?後面要加內建函式名,例如:<#if object?exists>object物件不為空(即object存在)</#if>

<#if str??>${str?string}</#if><#--將str以字串形式顯示-->

4. freemarker的內建函式

${nowDate?time}<#--將現有時間以時間的格式顯示,顯示結果如:15:13:05-->

${nowDate?date}<#--以日期格式顯示,如:2011-4-28-->(date的格式可以在freemarker.properties檔案中配置)

日期格式化 ${time?string("yyyy-MM-dd")}

擷取字串 ${str?substring(0,2)}

indexof的使用 ${str?last_index_of(",")}

split的使用

<#list "12,13,14,15"?split(",") as item>

${item}

</#list>

${s?if_exists}

${item_index?if_exists+1}

${user.name?default('vakin')},同上

5.  freemarker運算子

<#if score gte 60>

 及格

<#elseif score gte 80 && score lte 90>

良好

<#else>

高材生

</#if>