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>