Freemarker 內置函數、遍歷list

1、  Sequence的內置函數
1.sequence?first 返回sequence的第一個值。
2.sequence?last  返回sequence的最後一個值。
3.sequence?reverse 將sequence的現有順序反轉,即倒序排序
4.sequence?size    返回sequence的大小
5.sequence?sort    將sequence中的對象轉化爲字符串後順序排序
6.sequence?sort_by(value) 按sequence中對象的屬性value進行排序
2、Hash的內置函數
1.hash?keys 返回hash裏的全部key,返回結果爲sequence
2.hash?values 返回hash裏的全部value,返回結果爲sequence
例如:
<#assign user={「name」:「hailang」, 「sex」:「man」}>
 <#assign keys=user?keys>
 <#list keys as key>
   ${key}=${user[key]}
 </#list>
 </#assign>
</#assign>html

3、 操做字符串函數
1.substring(start,end)從一個字符串中截取子串
start:截取子串開始的索引,start必須大於等於0,小於等於end
end: 截取子串的長度,end必須大於等於0,小於等於字符串長度,若是省略該參數,默認爲字符串長度api


例子:
${‘str’?substring(0)}à結果爲str
${‘str’?substring(1)}à結果爲tr
${‘str’?substring(2)}à結果爲r
${‘str’?substring(3)}à結果爲
${‘str’?substring(0,0)}à結果爲
${‘str’?substring(0,1)}à結果爲s
${‘str’?substring(0,2)}à結果爲st
${‘str’?substring(0,3)}à結果爲str
2.cap_first 將字符串中的第一個單詞的首字母變爲大寫。
${‘str’?cap_first}à結果爲Str
3. uncap_first將字符串中的第一個單詞的首字母變爲小寫。
${‘Str’?cap_first}à結果爲str
4.capitalize將字符串中的全部單詞的首字母變爲大寫
${‘str’?capitalize}à結果爲STR
5.date,time,datetime將字符串轉換爲日期
例如:
<#assign date1=」2009-10-12」?date(「yyyy-MM-dd」)></#assign>
<#assign date2=」9:28:20」?time(「HH:mm:ss」)></#assign>
<#assign date3=」 2009-10-12 9:28:20」?time(「HH:mm:ss」)></#assign>
${date1}à結果爲2009-10-12
${date2}à結果爲9:28:20
${date3}à結果爲2009-10-12 9:28:20
注意:若是指定的字符串格式不正確將引起錯誤。
6.ends_with 判斷某個字符串是否由某個子串結尾,返回布爾值。
${「string」?ends_with(「ing」)?string} 返回結果爲true
注意:布爾值必須轉換爲字符串才能輸出
7.html 用於將字符串中的<、>、&和「替換爲對應得&lt;&gt;&quot:&amp
8. index_of(substring,start)在字符串中查找某個子串,返回找到子串的第一個字符的索引,若是函數

沒有找到子串,則返回-1。
Start參數用於指定從字符串的那個索引處開始搜索,start爲數字值。
若是start大於字符串長度,則start取值等於字符串長度,若是start小於0, 則start取值爲0。
${「string」?index_of(「in」) à結果爲3
${「string」?index_of(「ab」) à結果爲-1
9.length返回字符串的長度 ${「string」?length}à結果爲6
10.lower_case將字符串轉爲小寫
${「STRING」?lower_case}à結果爲string
11.upper_case將字符串轉爲大寫
${「string」?upper_case}à結果爲STRING
12.contains 判斷字符中是否包含某個子串。返回布爾值
${「string」?contains(「ing」)?string} à結果爲true
注意:布爾值必須轉換爲字符串才能輸出
13.number將字符串轉換爲數字
${「111.11」?number}à結果爲111.11
14.replace用於將字符串中的一部分從左到右替換爲另外的字符串。
${「strabg」?replace(「ab」,」in」)} à結果爲string
15. split使用指定的分隔符將一個字符串拆分爲一組字符串
<#list 「This|is|split」?split(「|」) as s>
 ${s}
</#list>
結果爲:
This
is
split
16.trim 刪除字符串首尾空格 ${「  String 」?trim} à結果爲String
"    "?trim 和 null?trim 都會返回空!
4、 操做數字
1. c 用於將數字轉換爲字符串
${123?c} à結果爲123
2.string用於將數字轉換爲字符串
Freemarker中預訂義了三種數字格式:number,currency(貨幣)和percent(百分比)其中number爲默認編碼

的數字格式轉換
例如:
<#assign tempNum=20>
${tempNum}   
${tempNum?string.number}或${tempNum?string(「number」)} à結果爲20
${tempNum?string.currency}或${tempNum?string(「currency」)} à結果爲¥20.00
${tempNum?string. percent}或${tempNum?string(「percent」)} à結果爲2,000%
5、操做布爾值
string 用於將布爾值轉換爲字符串輸出
true轉爲「true」,false轉換爲「false」
foo?string(「yes」,」no」)若是布爾值是true,那麼返回「yes」,不然返回no
6、判斷是否爲空
<#if (test)!>  能夠判斷是否爲空,當傳來的值爲布爾型時,判斷不爲空後,仍會解析傳來的值!
傳來的值爲""會認爲是null,驗證不經過。
<#if (test)??> 無論傳來的值什麼是什麼類型,只會判斷是否爲空。
傳來的值爲""不會認爲是null,驗證經過。
freemarker
指令:<#xxx>
自定義指令<@xxx>
轉換${1.1?int}
${aa?c}做用把String轉換爲數字,由於freemarker默認的會採用科學計數法,好比1,000,000
html:對字符串進行HTML編碼
cap_first:使字符串第一個字母大寫
lower_case:將字符串轉換成小寫
upper_case:將字符串轉換成大寫
trim:去掉字符串先後的空白字符
序列使用的:
size:得到序列中元素的數目
數字使用的:
int:取得數字的整數部分(如-1.9?int的結果是-1)
<#setting number_format="number"/>
<#setting date_format=""/>
<#setting time_format=""/>
<#setting datetime_format=""/>
<#assign answer=42/>
<#if s?exists>
${s?if_exists}
exists用在邏輯判斷,而if_exists用來打印東西時用到,若是存在打印,不存在打印空字符串.
exp1?exists將會被exp1??代替
exp1?if_exists將會被exp1!代替
exp1?default(exp2)將會被exp1!exp2,這些在2.4版本中會體現到??
 <#setting datetime_format="yyyy-MM-dd HH:mm"/>
  <#setting date_format="yyyy-MM-dd"/>
  <#setting time_format="HH:mm"/>
  <#assign xxx="2006-10-13 10:30:20"/>
  ${xxx?datetime}
<#assign i=30/>
<#assign ii=30.00/>
<#assign str="test"/>
${ii},${ii?int},${ii?double},${ii?float},${i},${i?double},${str?if_exists},${s?if_exists},
<#if s?exists>
${"test"}
<#else>
${"noexists"}
<#assign x=1,y=2,z=3/>
<#if x=1>
x=1
<#elseif y=1>
y=1
<#elseif z=1>
z=1
<#list 1..6 as t>
xxx${t}orm

相關文章
相關標籤/搜索