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')} (較繁瑣)
product.color??將只測試color是否為null
(product.color)??將測試product和color是否存在null
??是判斷物件是否為空,例如:<#if object??>object物件不為空(即object存在)</#if>
?後面要加內建函式名,例如:<#if object?exists>object物件不為空(即object存在)</#if>
<#if str??>${str?string}</#if><#--將str以字串形式顯示-->
${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')},同上
<#if score gte 60>
及格
<#elseif score gte 80 && score lte 90>
良好
<#else>
高材生
</#if>