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進行排序
注意:Sequence不能爲null
<span style="color:#FF0000;">2、Hash的內置函數</span> 1.hash?keys 返回hash裏的全部key,返回結果爲sequence 2.hash?values 返回hash裏的全部value,返回結果爲sequence <span style="color:#FF0000;"> 3、操做字符串函數</span> 1.substring(start,end)從一個字符串中截取子串 start:截取子串開始的索引,start必須大於等於0,小於等於end end: 截取子串的長度,end必須大於等於0,小於等於字符串長度,若是省略該參數,默認爲字符串長度。 2.cap_first 將字符串中的第一個單詞的首字母變爲大寫。 3.uncap_first將字符串中的第一個單詞的首字母變爲小寫。 4.capitalize將字符串中的全部單詞的首字母變爲大寫 5.date,time,datetime將字符串轉換爲日期 注意:若是指定的字符串格式不正確將引起錯誤 6.ends_with 判斷某個字符串是否由某個子串結尾,返回布爾值 注意:布爾值必須轉換爲字符串才能輸出 7.html 用於將字符串中的<、>、&和"替換爲對應得<>":& 8.index_of(substring,start)在字符串中查找某個子串,返回找到子串的第一個字符的索引,若是沒有找到子串,則返回-1。 Start參數用於指定從字符串的那個索引處開始搜索,start爲數字值。 若是start大於字符串長度,則start取值等於字符串長度,若是start小於0,則start取值爲0。 9.length返回字符串的長度 10.lower_case將字符串轉爲小寫 11.upper_case將字符串轉爲大寫 12.contains 判斷字符中是否包含某個子串。返回布爾值 注意:布爾值必須轉換爲字符串才能輸出 13.number將字符串轉換爲數字 14.replace用於將字符串中的一部分從左到右替換爲另外的字符串。 15.split使用指定的分隔符將一個字符串拆分爲一組字符串 16.trim 刪除字符串首尾空格 <span style="color:#FF0000;">4、操做數字</span> 1.c 用於將數字轉換爲字符串 2.string用於將數字轉換爲字符串 Freemarker中預訂義了三種數字格式:number,currency(貨幣)和percent(百分比)其中number爲默認的數字格式轉換 <span style="color:#FF0000;">五操做布爾值 </span> string 用於將布爾值轉換爲字符串輸出 true轉爲"true",false轉換爲"false" foo?string("yes","no")若是布爾值是true,那麼返回"yes",不然返回no <#assign x = "aa"/> <#if x=="aa"> x is aa <#else> x not aa </#if> <span style="color:#FF0000;">遍歷 list map</span> <#list somelist as item> ${item} //若是是bean ${item.title} </#list> 判斷list的長度 <#if somlist?size>0> </#if>
遍歷map
<#list mapObj?keys as k> <#assign item = mapObj[k]> //or <#assign item = mapObj.get(k)> ${item.title} </#list> 防止null 值 黃色警告頁面 ${(item.title)!"一些默認值"} freemarker 是能夠調用java 裏面的方法的 如 myList 是一個list ${myList.size()} 將輸出list 的長度 freemarker 大於 小於 大於等於 小於等於 <#if x gt 1> "gt" 大於 </#if> <span style="color:#FF0000;">freemarker 經常使用內置函數的使用方法 </span> 在咱們應用Freemarker過程當中,常常會操做例如字符串,數字,集合等,卻不清楚Freemrker有沒有相似於Java同樣有相關的類及方法。在本文當中,我將向你們詳細的介紹Freemarke的內置函數及用法,以便能幫助你們更熟練的應用Freemarker完成項目開發。 <span style="color:#FF0000;">1、 Sequence的內置函數</span> 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進行排序 注意:Sequence不能爲null。以上方法在個人另外一篇博客Freemarker中如何遍歷List有詳細的應用,感興趣的朋友能夠參考。 <span style="color:#FF0000;">2、Hash的內置函數</span> 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> <span style="color:#FF0000;"> 3、 操做字符串函數</span> 1. substring(start,end)從一個字符串中截取子串 start:截取子串開始的索引,start必須大於等於0,小於等於end end: 截取子串的長度,end必須大於等於0,小於等於字符串長度,若是省略該參數,默認爲字符串長度。 例子: ${‘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 date2=」9:28:20」?time(「HH:mm:ss」)> <#assign date3=」 2009-10-12 9:28:20」?time(「HH:mm:ss」)> ${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 用於將字符串中的<、>、&和「替換爲對應得<>":& 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 <span style="color:#FF0000;">4、操做數字</span> 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% <span style="color:#FF0000;">5、 操做布爾值</span> string 用於將布爾值轉換爲字符串輸出 true轉爲「true」,false轉換爲「false」 foo?string(「yes」,」no」)若是布爾值是true,那麼返回「yes」,不然返回no <span style="color:#FF0000;">freemarker List的遍歷</span> Freemarker中如何遍歷List摘要:在Freemarker應用中常常會遍歷List獲取須要的數據, 並對須要的數據進行排序加工後呈現給用戶。那麼在Freemarker中如何遍歷List, 並對List中數據進行適當的排序呢? 經過下文的介紹,相信您必定會找到答案。 <span style="color:#FF0000;">1、 Freemarker中list指令簡單介紹</span> 要想在Freemarker中遍歷list,必須經過使用list指令,即<#list sequence as item>…</#list> sequence是集合(collection)的表達式,item是循環變量的名字,不能是表達式。 當在遍歷sequence時,會將遍歷變量的值保存到item中。 舉個例子說明吧: <#list userList as user> … </#list> userList中封裝了不少個User對象,咱們在遍歷userList時候,會將遍歷的User對象的值,保存到上述的user變量中。 那麼在取值時,咱們能夠經過${user.userName }來獲取User對象的userName屬性值。 List指令還隱含了兩個循環變量: item_index:當前迭代項在全部迭代項中的位置,是數字值。 item_has_next:用於判斷當前迭代項是不是全部迭代項中的最後一項。 注意:在使用上述兩個循環變量時,必定要將item換成你本身定義的循環變量名,item其實就是前綴罷了。 例如,若是你使用<# list list as l>..</#list>定義,那麼就要使用l_index,l_has_next。 在循環過程當中,若是您想跳出循環,那麼可使用結合break指令,即<#break>來完成。 <span style="color:#FF0000;">2、 Freemarker中對List進行排序</span> 一般咱們的排序操做都是經過DAO層來實現的,若是咱們想隨時更改咱們的排序,那麼就必須修改咱們的DAO層代碼, 確實不方便。但Freemarker爲咱們提供了這樣的排序方法,解決了這個問題。 1. sort升序排序函數 sort對序列(sequence)進行排序,要求序列中的變量必須是:字符串(按首字母排序),數字,日期值。 <#list list?sort as l>…</#list> 2. sort_by函數 sort_by有一個參數,該參數用於指定想要排序的子變量,排序是按照變量對應的值進行排序,如: <#list userList?sort_by(「age」) as user>…</#list> age是User對象的屬性,排序是按age的值進行的。 3. reverse降序排序函數 <#list list? reverse as l>…</#list> reverse使用同sort相同。reverse還能夠同sort_by一塊兒使用 如:想讓用戶按年齡降序排序,那麼能夠這個樣寫<#list userList?sort_by(「age」)?reverse as user>…</#list> "_index"是FreeMarker中對於循環索引變量的命名約定。 經過「迭代變量名_index」便可訪問當前循環索引。 相似的循環狀態訪問約定還有「迭代變量名_has_next」,可經過這個循環狀態屬性判斷是否還有後繼循環。 因不少時候要用到「序號」、「索引」之類的東西,而FreeMarker恰好本身帶有,但不少人還並不知道它的妙用。所以就從Spring開發指南摘錄下來。 這樣能夠避免另申請一個變量,而後每次循環體又對它+1了。 不知道是否提到過這個。 <#list subDir as d> <input type="checkbox" name="ids" value="file-${d_index}"/> </#list> <span style="color:#FF0000;">FreeMarker 基礎知識 表達式(引用)</span> 表達式是FreeMarker的核心功能,FreeMarker中的插值支持多種表達式。 <span style="color:#FF6666;">1、直接指定值</span> 直接指定值能夠是字符串、數值、布爾值、集合及Map對象。 1. 字符串 直接指定字符串值使用單引號或雙引號限定。字符串中可使用轉義字符」\"。若是字符串內有大量的特殊字符,則能夠在引號的前面加上一個字母r,則字符串內的全部字符都將直接輸出。2. 數值 數值能夠直接輸入,不須要引號。FreeMarker不支持科學計數法。3. 布爾值 直接使用true或false,不使用引號。4. 集合 集合用中括號包括,集合元素之間用逗號分隔。 使用數字範圍也能夠表示一個數字集合,如1..5等同於集合[1, 2, 3, 4, 5];一樣也能夠用5..1來表示[5, 4, 3, 2, 1]。5. Map對象 Map對象使用花括號包括,Map中的key-value對之間用冒號分隔,多組key-value對之間用逗號分隔。 注意:Map對象的key和value都是表達式,但key必須是字符串。 <span style="color:#FF6666;">2、輸出變量值</span> FreeMarker的表達式輸出變量時,這些變量能夠是頂層變量,也能夠是Map對象的變量,還能夠是集合中的變量,並可使用點(.)語法來訪問Java對象的屬性。1. 頂層變量 所謂頂層變量就是直接放在數據模型中的值。輸出時直接用${variableName}便可。2. 輸出集合元素 能夠根據集合元素的索引來輸出集合元素,索引用中括號包括。如: 輸出[「1」, 「2」, 「3」]這個名爲number的集合,能夠用${number[0]}來輸出第一個數字。FreeMarker還支持用number[1..2]來表示原集合的子集合[「2」, 「3」]。3. 輸出Map元素 對於JavaBean實例,FreeMarker同樣把它看做屬性爲key,屬性值爲value的Map對象。 輸出Map對象時,可使用點語法或中括號語法,以下面的幾種寫法的效果是同樣的: book.author.name book.author["name"]