freemarker中list常用處理方法
在freemarker中list是經常用到的
比如在頁面中需要有個單純的遍歷(以年度為例),無需呼叫任何資料,很方便
程式碼:
這樣會遇到一個問題,當資料超過3位的時候,freemarker會自動用逗號擷取 格式如:2,008
如何解決呢?
1> 加.toString(),如:${(userId).toString()}
2> 加?c,如:${(userId)?c}
3> freemarker配置檔案freemarker.properties加上number_format=#
判斷是否為空:
1.<#if xx?exists>
2.<#if xx??>
3.<#if xx?default("xxx")>
不然當xxList沒有資料的時候 ,很大很大一個黃頁就等著你了
資料型別轉換:
${xx?string} //字串
${xx?number}//整數
${xx?currency}//小數
${xx?percent} //百分比
擷取字串長度:
有的時候我們在頁面中不需要顯示那麼長的字串,比如新聞標題,這樣用下面的列子就可以自定義顯示的長度
< lt. <= lte. > gt. >= gte
<#if jstbqkVO.gzdd?length lt 8>
<a href>${jstbqkVO.gzdd?default("")}</a>
<#else>
<a href title="${jstbqkVO.gzdd}">${jstbqkVO.gzdd[0..3]?default("")}...</a>
</#if>
意思就是如果這個字串的長度小於8,那麼就正常顯示,反之則取4位
巢狀list:
很多時候,資料庫裡儲存的都是編號,而頁面上需要顯示的漢字,而且不在一張表裡,看列子
<#list jsskList as jsskVO>
<#list kcList as kcVO>
<#if kcVO.kch=jsskVO.kch> (kcVO裡有編號和名稱,而jsskVO裡只有編號)
${kcVO.kcm}
</#if>
</#list>
</#list>
排序:
1.升序.sort_by()
<#list list?sort_by("欄位") as x>
</#list>
2.降序.sort_by()?reverse
<#list list?sort_by("欄位")?reverse as x>
</#list>
去空格:
${xx?trim}
格式化日期:
${date?string("yyyy-MM-dd HH:mm:ss ")}
${date?string("yyyyMMdd ")}