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使用:
<#list userList as user>
第${user_index+1}个用户
  用户名:${user.userName}
  密  码:${user.userPassword}
  年  龄: ${user.age}
< /#list>
< #--Freemarker遍历list并应用list隐含变量item_has_next-->
item_has_next,size使用:
<#list userList as user>

用户名:${user.userName}
  密  码:${user.userPassword}
  年  龄: ${user.age}
  <#if !user_has_next>
  共有${userList?size}最后一个用户是:${user.userName}
< /#if>
< /#list>
< #--Freemarker遍历list并按用户年龄升序排序-->

按用户年龄升序排序:
<#list userList?sort_by("age") as user>

用户名:${user.userName}
  密  码:${user.userPassword}
  年  龄: ${user.age}
 
< /#list>
< #--Freemarker遍历list并按用户年龄降序排序-->

按用户年龄降序排序:
<#list userList?sort_by("age")?reverse as user>

用户名:${user.userName}
  密  码:${user.userPassword}
  年  龄: ${user.age}
 
< /#list>
< #--Freemarker遍历list当用户年龄大于21岁时,停止输出-->
list中应用break:
< #list userList?sort_by("age")?reverse as user>

用户名:${user.userName}
  密  码:${user.userPassword}
  年  龄: ${user.age}
  <#if (user.age>21)>
    <#break>
  </#if>
< /#list>

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有一个清楚的了解。

Freemarker中如何遍历List相关推荐

  1. freemarker中map遍历

    freemarker中map遍历获取值 后台数据: HashMap<String, String> map = new HashMap<>();map.put("ad ...

  2. fremaker遍历list_Freemarker中如何遍历List

    Freemarker中如何遍历List摘要:在Freemarker应用中经常会遍历List获取需要的数据,并对需要的数据进行排序加工后呈现给用户.那么在Freemarker中如何遍历List,并对Li ...

  3. java与freemarker中map的遍历

    java中部分时间都是要的是list集合,偶尔会使用到map集合,但是经常会忘记map集合的如何遍历,今天记录下: java中的遍历 import java.util.Collection; impo ...

  4. python实现二叉树的重建2 之由中序遍历和后序遍历重建

    前言 通过上一节对python实现二叉树的重建1 之由前序遍历和中序遍历重建,我相信我们再来做这个问题就不难了,完全可以照猫画虎的来实现,具体的原理几乎是一样的,直接上代码了 code # 通用解法d ...

  5. python实现二叉树的重建1 之由前序遍历和中序遍历重建

    前言 此题是关于树的面试题目的常见题型,题目的含义很清晰,这个就不用多说了 解法 关于这道题的解法有很多不同的样式,通用的解法是这样的: 假如现在我们有如下两个遍历的情况 preorder: [1, ...

  6. 通过前序遍历和中序遍历构建二叉树 python实现

    前言 通过前序遍历和中序遍历构建二叉树的原理,主要是找前序遍历根节点在中序遍历中的位置,然后将二叉树而成左子树和右子树,然后依次进行这样的操作,思路还是比较简单的 代码 class Node:def ...

  7. FreeMarker中的list集合前后台代码

    freemarker中的list集合前后台代码: FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它 ...

  8. python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)

    树的实现采用queue的形式: 树的三种遍历方式(广度优先白能力法):先序遍历(根左右),中序遍历(左根右)以及后序遍历(左右根) ######################P6.4 数据结构### ...

  9. 二叉树--先序中序遍历求后序遍历

    先序遍历:根 左 右 中序遍历:左 根 右 后序遍历:左 右 根 我们可以先从先序遍历中找到根节点,由于知道了根节点那么可以依靠中序遍历找到左子树,右子树.这样再去先序遍历中找到左子树的根节点,然后再 ...

最新文章

  1. 1057 Stack
  2. python第三方库安装-python第三方库安装在哪
  3. 编程学习--从入门到放弃
  4. hibernate脏数据_Hibernate脏检查的剖析
  5. python填表_小Python填表得到d
  6. 安卓上传文件php失败,android - php上传图片时 $_FILES为空
  7. python网络爬虫面试题,搞定这套Python爬虫面试题(面试会so easy)
  8. okhttp post json 数据_使用python抓取App数据
  9. python---django中url路由分发
  10. vSphere 7.0 GA正式版发布
  11. 利用Linux搭建SVN服务器,详细过程
  12. Windows用户程序报错或软件无法删除或者卡顿,解决办法
  13. windows java 进程_windows下java -jar 后台运行以及杀死后台进程的操作
  14. python在线问卷调查系统源代码_基于Java Web的在线问卷调查系统 源码下载
  15. 智能聊天机器人平台的架构与应用
  16. struts1的配置文件详解
  17. html数据线如何使用,揭秘数据线DIY详细步骤
  18. 黄蓝专场之 | ofo小黄车的执念与博弈
  19. 光影学习 - 三点光照
  20. R语言批量读取写入Excel数据 r导出输出写入excel多个sheet 导出excel 导入 excel 读入excel 表格

热门文章

  1. HMM算例 python 有代码
  2. 业务总结004:检验项目时间轮实践与库存实现方案
  3. VTK:提取可见细胞用法实战
  4. wxWidgets:wxTextWrapper类用法
  5. wxWidgets:图像面板image panel
  6. boost::spirit模块实现错误处理的测试程序
  7. boost::proto模块实现简单的算术表达式求值器的测试程序
  8. boost::outcome模块comparison相关的测试程序
  9. boost::math::inverse_chi_squared用法的测试程序
  10. boost::hana::take_front_c用法的测试程序