Freemarker中如何遍歷List

Freemarker中如何遍歷List

2011-01-17 10:4631788人閱讀評(píng)論(5)收藏舉報(bào)

freemarkeruserlistdaoobjectstring

原文地址:Freemarker中如何遍歷List作者:冰天雪地

Freemarker中如何遍歷List(附源碼)

關(guān)鍵詞(Keyword):Freemarker,Freemarker遍歷list

在Freemarker應(yīng)用中經(jīng)常會(huì)遍歷List獲取需要的數(shù)據(jù),并對(duì)需要的數(shù)據(jù)進(jìn)行排序加工后呈現(xiàn)給用戶。那么在Freemarker中如何遍歷List忧设,并對(duì)List中數(shù)據(jù)進(jìn)行適當(dāng)?shù)呐判蚰兀?/p>

通過(guò)下文的介紹关斜,相信您一定會(huì)找到答案甫匹。

一挪钓、Freemarker中l(wèi)ist指令簡(jiǎn)單介紹

要想在Freemarker中遍歷list,必須通過(guò)使用list指令,即<#list sequence as item>…

sequence是集合(collection)的表達(dá)式夹界,item是循環(huán)變量的名字飘千,不能是表達(dá)式。

當(dāng)在遍歷sequence時(shí)伞芹,會(huì)將遍歷變量的值保存到item中忘苛。

舉個(gè)例子說(shuō)明吧:

<#list userList as user>…

userList中封裝了很多個(gè)User對(duì)象,我們?cè)诒闅vuserList時(shí)候唱较,會(huì)將遍歷的User對(duì)象的值扎唾,保存到上述的user變量中。那么在取值時(shí)南缓,我們可以通過(guò)${user.userName }來(lái)獲取User對(duì)象的userName屬性值胸遇。List指令還隱含了兩個(gè)循環(huán)變量:

item_index:當(dāng)前迭代項(xiàng)在所有迭代項(xiàng)中的位置,是數(shù)字值汉形。

item_has_next:用于判斷當(dāng)前迭代項(xiàng)是否是所有迭代項(xiàng)中的最后一項(xiàng)纸镊。

注意:在使用上述兩個(gè)循環(huán)變量時(shí)倍阐,一定要將item換成你自己定義的循環(huán)變量名,item其實(shí)就是前綴罷了。

例如逗威,如果你使用<# list list as l>..定義峰搪,那么就要使用l_index,l_has_next。在循環(huán)過(guò)程中凯旭,如果您想跳出循環(huán)概耻,那么可以使用結(jié)合break指令,即<#break>來(lái)完成尽纽。

二、Freemarker中對(duì)List進(jìn)行排序

通常我們的排序操作都是通過(guò)DAO層來(lái)實(shí)現(xiàn)的童漩,如果我們想隨時(shí)更改我們的排序弄贿,那么就必須修改我們的DAO層代碼,確實(shí)不方便矫膨。但Freemarker為我們提供了這樣的排序方法差凹,解決了這個(gè)問(wèn)題。

1.sort升序排序函數(shù)

sort對(duì)序列(sequence)進(jìn)行排序侧馅,要求序列中的變量必須是:字符串(按首字母排序),數(shù)字危尿,日期值。

<#list list?sort as l>…

2.sort_by函數(shù)

sort_by有一個(gè)參數(shù),該參數(shù)用于指定想要排序的子變量馁痴,排序是按照變量對(duì)應(yīng)的值進(jìn)行排序,如:

<#list userList?sort_by(“age”) as user>…

age是User對(duì)象的屬性谊娇,排序是按age的值進(jìn)行的。

3.reverse降序排序函數(shù)<#list list? reverse as l>…罗晕。reverse使用同sort相同济欢。reverse還可以同sort_by一起使用

如:想讓用戶按年齡降序排序,那么可以這個(gè)樣寫(xiě)<#list userList?sort_by(“age”)?reverse as user>…

三小渊、Freemarker如何遍歷List實(shí)例應(yīng)用

創(chuàng)通過(guò)上面的介紹法褥,相信您已經(jīng)對(duì)Freemarker如何遍歷List有了了解,那么我們就廢話少說(shuō)酬屉,開(kāi)始做一個(gè)應(yīng)用吧半等。

User類

public class User{private String username;private(省略set和get方法)

}

user.ftl

<#--Freemarker遍歷list-->

簡(jiǎn)單遍歷list:

<#list userList as user>用戶名:${user.userName}密碼:${user.userPassword}年齡: ${user.age}


<#--Freemarker遍歷list并應(yīng)用list隱含變量item_index-->

item_index使用:

<#list userList as user>

第${user_index+1}個(gè)用戶用戶名:${user.userName}密碼:${user.userPassword}年齡: ${user.age}


<#--Freemarker遍歷list并應(yīng)用list隱含變量item_has_next-->

item_has_next,size使用:

<#list userList as user>

用戶名:${user.userName}密碼:${user.userPassword}年齡: ${user.age}<#if !user_has_next>共有${userList?size}最后一個(gè)用戶是:${user.userName}



<#--Freemarker遍歷list并按用戶年齡升序排序-->

按用戶年齡升序排序:

<#list userList?sort_by("age") as user>

用戶名:${user.userName}密碼:${user.userPassword}年齡: ${user.age}


<#--Freemarker遍歷list并按用戶年齡降序排序-->

按用戶年齡降序排序:

<#list userList?sort_by("age")?reverse as user>

用戶名:${user.userName}密碼:${user.userPassword}年齡: ${user.age}


<#--Freemarker遍歷list當(dāng)用戶年齡大于21歲時(shí),停止輸出-->

list中應(yīng)用break:

<#list userList?sort_by("age")?reverse as user>

用戶名:${user.userName}密碼:${user.userPassword}年齡: ${user.age}<#if (user.age>21) ><#break>


ClientTest類

public class ClientTest{public static List initUserList(){

User user1=new User();user1.setUserName("張三");user1.setUserPassword("123");user1.setAge(20);User user2=new User();user2.setUserName("李四");user2.setUserPassword("123");user2.setAge(22);User user3=new User();user3.setUserName("王五");user3.setUserPassword("123");user3.setAge(21);

List list=new ArrayList();list.add(user1);list.add(user2);

list.add(user3);

return list;

}

public static void main(String[] args){List list=ClientTest.initUserList();

Map root=new HashMap();

root.put(“userList”,list);FreeMarkertUtil.analysisTemplate(“user.ftl”,”UTF-8”,root);

//FreeMarkUtil類可以參考我上傳得源碼呐萨。

}

}

好了杀饵,到這里程序就結(jié)束了,您可以運(yùn)行ClientTest類來(lái)查看輸出結(jié)果了谬擦。

希望通過(guò)本文的介紹凹髓,可以讓您對(duì)FreeMarker如何遍歷List有一個(gè)清楚的了解。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末怯屉,一起剝皮案震驚了整個(gè)濱河市蔚舀,隨后出現(xiàn)的幾起案子饵沧,更是在濱河造成了極大的恐慌,老刑警劉巖赌躺,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狼牺,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡礼患,警方通過(guò)查閱死者的電腦和手機(jī)是钥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)缅叠,“玉大人悄泥,你說(shuō)我怎么就攤上這事》袅唬” “怎么了弹囚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)领曼。 經(jīng)常有香客問(wèn)我鸥鹉,道長(zhǎng),這世上最難降的妖魔是什么庶骄? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任毁渗,我火速辦了婚禮,結(jié)果婚禮上单刁,老公的妹妹穿的比我還像新娘灸异。我一直安慰自己,他們只是感情好羔飞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布绎狭。 她就那樣靜靜地躺著,像睡著了一般褥傍。 火紅的嫁衣襯著肌膚如雪儡嘶。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天恍风,我揣著相機(jī)與錄音蹦狂,去河邊找鬼。 笑死朋贬,一個(gè)胖子當(dāng)著我的面吹牛凯楔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锦募,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼摆屯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起虐骑,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤准验,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后廷没,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體糊饱,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颠黎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年另锋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狭归。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡夭坪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出过椎,到底是詐尸還是另有隱情室梅,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布潭流,位于F島的核電站竞惋,受9級(jí)特大地震影響柜去,放射性物質(zhì)發(fā)生泄漏灰嫉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一嗓奢、第九天 我趴在偏房一處隱蔽的房頂上張望讼撒。 院中可真熱鬧,春花似錦股耽、人聲如沸根盒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)炎滞。三九已至,卻和暖如春诬乞,著一層夾襖步出監(jiān)牢的瞬間册赛,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工震嫉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留森瘪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓票堵,卻偏偏與公主長(zhǎng)得像扼睬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子悴势,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • FreeMarker的模板文件并不比HTML頁(yè)面復(fù)雜多少,FreeMarker模板文件主要由如下4個(gè)部分組成: 1...
    年輕小伙程序員閱讀 3,004評(píng)論 0 5
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理窗宇,服務(wù)發(fā)現(xiàn)措伐,斷路器,智...
    卡卡羅2017閱讀 134,667評(píng)論 18 139
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)担映。 張土汪:刷leetcod...
    土汪閱讀 12,747評(píng)論 0 33
  • 本文由一集原創(chuàng)出品蝇完,首發(fā)于公眾號(hào):vmi悠游旅行官硝。未經(jīng)授權(quán),謝絕轉(zhuǎn)載短蜕。 當(dāng)今世界五大洋 七大洲氢架,有 200 多個(gè)國(guó)...
    一集閱讀 413評(píng)論 0 0
  • 頂頂岖研,我是媽媽,今生無(wú)緣警检,很遺憾孙援。 媽媽對(duì)不起你,我和爸爸都剛畢業(yè)扇雕,還不能迎接你的到來(lái)拓售。我們還沒(méi)有那個(gè)能力來(lái)養(yǎng)育你...
    一只叫Amber的小狐貍閱讀 237評(píng)論 1 0