一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Freemarker中遍歷List實(shí)例

 真愛圖書 2013-04-22
Freemarker中如何遍歷List摘要:在Freemarker應(yīng)用中經(jīng)常會(huì)遍歷List獲取需要的數(shù)據(jù),并對需要的數(shù)據(jù)進(jìn)行排序加工后呈現(xiàn)給用戶。那么在Freemarker中如何遍歷List,并對List中數(shù)據(jù)進(jìn)行適當(dāng)?shù)呐判蚰兀?
通過下文的介紹,相信您一定會(huì)找到答案。

一、 Freemarker中l(wèi)ist指令簡單介紹
要想在Freemarker中遍歷list,必須通過使用list指令,即<#list sequence as item>…</#list>
sequence是集合(collection)的表達(dá)式,item是循環(huán)變量的名字,不能是表達(dá)式。
當(dāng)在遍歷sequence時(shí),會(huì)將遍歷變量的值保存到item中。
舉個(gè)例子說明吧:
<#list userList as user>

</#list>
userList中封裝了很多個(gè)User對象,我們在遍歷userList時(shí)候,會(huì)將遍歷的User對象的值,保存到上述的user變量中。那么在取值時(shí),我們可以通過${user.userName }來獲取User對象的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>..</#list>定義,那么就要使用l_index,l_has_next。

在循環(huán)過程中,如果您想跳出循環(huán),那么可以使用結(jié)合break指令,即<#break>來完成。

二、 Freemarker中對List進(jìn)行排序
通常我們的排序操作都是通過DAO層來實(shí)現(xiàn)的,如果我們想隨時(shí)更改我們的排序,那么就必須修改我們的DAO層代碼,確實(shí)不方便。但Freemarker為我們提供了這樣的排序方法,解決了這個(gè)問題。
1. sort升序排序函數(shù)
sort對序列(sequence)進(jìn)行排序,要求序列中的變量必須是:字符串(按首字母排序),數(shù)字,日期值。
<#list list?sort as l>…</#list>
2. sort_by函數(shù)
sort_by有一個(gè)參數(shù),該參數(shù)用于指定想要排序的子變量,排序是按照變量對應(yīng)的值進(jìn)行排序,如:
<#list userList?sort_by(“age”) as user>…</#list>
age是User對象的屬性,排序是按age的值進(jìn)行的。
3. reverse降序排序函數(shù)
    <#list list? reverse as l>…</#list>
     reverse使用同sort相同。reverse還可以同sort_by一起使用
       如:想讓用戶按年齡降序排序,那么可以這個(gè)樣寫<#list userList?sort_by(“age”)?reverse as user>…</#list>

三、 Freemarker如何遍歷List實(shí)例應(yīng)用
通過上面的介紹,相信您已經(jīng)對Freemarker如何遍歷List有了了解,那么我們就廢話少說,開始做一個(gè)應(yīng)用吧。
user.ftl
Java代碼 復(fù)制代碼 收藏代碼
  1. public class User {   
  2.     private String userName;   
  3.     private String userPassword;   
  4.     private Integer age;   
  5.        
  6.        
  7.     public String getUserName() {   
  8.         return userName;   
  9.     }   
  10.   
  11.     public void setUserName(String userName) {   
  12.         this.userName = userName;   
  13.     }   
  14.   
  15.     public String getUserPassword() {   
  16.         return userPassword;   
  17.     }   
  18.   
  19.     public void setUserPassword(String userPassword) {   
  20.         this.userPassword = userPassword;   
  21.     }   
  22.   
  23.     public Integer getAge() {   
  24.         return age;   
  25.     }   
  26.   
  27.     public void setAge(Integer age) {   
  28.         this.age = age;   
  29.     }   
  30.        
  31. }  


Java代碼 復(fù)制代碼 收藏代碼
  1. <#--Freemarker遍歷list-->   
  2. 簡單遍歷list:   
  3. <#list userList as user>   
  4.     用戶名:${user.userName}   
  5.     密  碼:${user.userPassword}   
  6.     年  齡: ${user.age}   
  7. </#list>   
  8.   
  9.   
  10. <#--Freemarker遍歷list并應(yīng)用list隱含變量item_index-->   
  11. item_index使用:   
  12. <#list userList as user>   
  13. 第${user_index+1}個(gè)用戶    <#--item_index:當(dāng)前迭代項(xiàng)在所有迭代項(xiàng)中的位置,是數(shù)字值-->   
  14.     用戶名:${user.userName}   
  15.     密  碼:${user.userPassword}   
  16.     年  齡: ${user.age}   
  17. </#list>   
  18. <#--Freemarker遍歷list并應(yīng)用list隱含變量item_has_next-->   
  19. item_has_next,size使用:   
  20. <#list userList as user>   
  21.     用戶名:${user.userName}   
  22.     密  碼:${user.userPassword}   
  23.     年  齡: ${user.age}   
  24.     <#if !user_has_next>  <#--item_has_next:用于判斷當(dāng)前迭代項(xiàng)是否是所有迭代項(xiàng)中的最后一項(xiàng) -->   
  25.     共有${userList?size}用戶,最后一個(gè)用戶是:${user.userName}   
  26.     </#if>   
  27. </#list>   
  28. <#--Freemarker遍歷list并按用戶年齡升序排序-->   
  29.   
  30. 按用戶年齡升序排序:   
  31. <#list userList?sort_by("age") as user>   
  32.   
  33.     用戶名:${user.userName}   
  34.     密  碼:${user.userPassword}   
  35.     年  齡: ${user.age}   
  36.        
  37. </#list>   
  38. <#--Freemarker遍歷list并按用戶年齡降序排序-->   
  39.   
  40. 按用戶年齡降序排序:   
  41. <#list userList?sort_by("age")?reverse as user>   
  42.   
  43.     用戶名:${user.userName}   
  44.     密  碼:${user.userPassword}   
  45.     年  齡: ${user.age}   
  46.        
  47. </#list>   
  48. <#--Freemarker遍歷list當(dāng)用戶年齡大于21歲時(shí),停止輸出-->   
  49. list中應(yīng)用break:   
  50. <#list userList?sort_by("age")?reverse as user>   
  51.   
  52.     用戶名:${user.userName}   
  53.     密  碼:${user.userPassword}   
  54.     年  齡: ${user.age}   
  55.     <#if (user.age>21) >   
  56.         <#break>   
  57.     </#if>   
  58. </#list>  

FreemarkerUtil
Java代碼 復(fù)制代碼 收藏代碼
  1. public class FreeMarkerUtil {   
  2.         public static void analysisTemplate(String templateName,String templateEncoding,Map<?,?> root){   
  3.         try {   
  4.             Configuration config=new Configuration();   
  5.             File file=new File("src/templates");   
  6.             //設(shè)置要解析的模板所在的目錄,并加載模板文件   
  7.             config.setDirectoryForTemplateLoading(file);   
  8.             //設(shè)置包裝器,并將對象包裝為數(shù)據(jù)模型   
  9.             config.setObjectWrapper(new DefaultObjectWrapper());   
  10.                
  11.             //獲取模板,并設(shè)置編碼方式,這個(gè)編碼必須要與頁面中的編碼格式一致   
  12.             Template template=config.getTemplate(templateName,templateEncoding);   
  13.             //合并數(shù)據(jù)模型與模板   
  14.             Writer out = new OutputStreamWriter(System.out);   
  15.             template.process(root, out);   
  16.             out.flush();   
  17.             out.close();   
  18.         } catch (IOException e) {   
  19.             e.printStackTrace();   
  20.         }catch (TemplateException e) {   
  21.             e.printStackTrace();   
  22.         }   
  23.            
  24.     }    
  25. }  

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩精品人妻少妇一区二区| 国产一区一一一区麻豆| 亚洲国产四季欧美一区| 久久国产精品熟女一区二区三区| 欧美日韩国产精品黄片| 国产精品第一香蕉视频| 99国产精品国产精品九九| 国产成人av在线免播放观看av | 精品一区二区三区乱码中文| 久久福利视频视频一区二区| 精品久久少妇激情视频| 自拍偷拍福利视频在线观看| 国产内射一级二级三级| 神马午夜福利免费视频| 欧美在线视频一区观看| 亚洲欧美日本国产有色| 欧美精品在线观看国产| 亚洲国产av精品一区二区| 欧美三级大黄片免费看| 熟女一区二区三区国产| 91欧美亚洲精品在线观看| 亚洲国产精品肉丝袜久久| 国产精品欧美一区二区三区不卡| 久久精品国产99精品亚洲| 日韩三极片在线免费播放| 国产一级精品色特级色国产| 精品精品国产欧美在线| 丝袜人妻夜夜爽一区二区三区| 国产又黄又猛又粗又爽的片| 人妻少妇久久中文字幕久久| 欧美人禽色视频免费看| 亚洲国产成人久久99精品| 黑丝国产精品一区二区| 太香蕉久久国产精品视频| 五月婷婷综合缴情六月| 精品女同一区二区三区| 免费特黄欧美亚洲黄片| 国产欧美一区二区三区精品视| 男人把女人操得嗷嗷叫| 国产成人精品一区二区在线看| 老熟妇乱视频一区二区|