天天看點

Freemarker中如何周遊List



freemarker中如何周遊list(附源碼)

關鍵詞(keyword):freemarker,freemarker周遊list

在freemarker應用中經常會周遊list擷取需要的資料,并對需要的資料進行排序加工後呈現給使用者。那麼在freemarker中如何周遊list,并對list中資料進行适當的排序呢?

通過下文的介紹,相信您一定會找到答案。

一、  freemarker中list指令簡單介紹

要想在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>來完成。

二、  freemarker中對list進行排序

通常我們的排序操作都是通過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>

三、  freemarker如何周遊list執行個體應用

創通過上面的介紹,相信您已經對freemarker如何周遊list有了了解,那麼我們就廢話少說,開始做一個應用吧。

user類

public class user{

private string username;

private

  (省略set和get方法)

}

user.ftl

<#--freemarker周遊list-->

簡單周遊list:

< #list userlist as user>

  使用者名:${user.username}

  密 

碼:${user.userpassword}

  年 

齡: ${user.age}

< /#list>

< #--freemarker周遊list并應用list隐含變量item_index-->

item_index使用:

第${user_index+1}個使用者

< #--freemarker周遊list并應用list隐含變量item_has_next-->

item_has_next,size使用:

使用者名:${user.username}

  <#if !user_has_next>

  共有${userlist?size}最後一個使用者是:${user.username}

< /#if>

< #--freemarker周遊list并按使用者年齡升序排序-->

按使用者年齡升序排序:

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

< #--freemarker周遊list并按使用者年齡降序排序-->

按使用者年齡降序排序:

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

< #--freemarker周遊list當使用者年齡大于21歲時,停止輸出-->

list中應用break:

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

  <#if (user.age>21)>

<#break>

  </#if>

clienttest類

public class clienttest{

  public static list<user> 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<user> list=new arraylist<user>();

list.add(user1);

list.add(user2);

list.add(user3);

return list;

public static void main(string[] args){

  list<user> list=clienttest.inituserlist(); 

map<string,object> root=new hashmap<string,object>();

root.put(“userlist”,list);

  freemarkertutil.analysistemplate(“user.ftl”,”utf-8”,root);

//freemarkutil類可以參考我上傳得源碼。

好了,到這裡程式就結束了,您可以運作clienttest類來檢視輸出結果了。

希望通過本文的介紹,可以讓您對freemarker如何周遊list有一個清楚的了解。