测试在Freemarker的模板中输出控制中的List数据列表,List列表中可以是一个自定义的JavaBean。实际上Freemarker将控制器返回的数据转化成JSON格式的数据。
控制器中构建一个简单的List数据和一个带有用户自定义JavaBean的List序列,如下:
package com.test.controller; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import com.test.mode.User; /** * 输出Freemarker中的Sequence数据 * @author Administrator * */ @Controller @RequestMapping("/sequencePrintController") public class SequencePrintController { @RequestMapping("/printList") public String printList(ModelMap map){ // 简单的List List<String> list = new ArrayList<String>(); list.add("张三"); list.add("李四"); list.add("王武"); list.add("赵牛"); list.add("李强"); list.add("王强"); list.add("邢鑫"); map.put("names", list); // 有数据对象的List List<User> users = new ArrayList<User>(); users.add(new User(1, "张三", "男", 21)); users.add(new User(2, "李四", "男", 19)); users.add(new User(3, "王武", "女", 20)); users.add(new User(4, "赵牛", "男", 24)); users.add(new User(5, "李强", "女", 27)); map.put("users", users); return "sequence.ftl"; } }
User.java
package com.test.mode; /** * 用户信息JavaBean * @author Administrator * */ public class User { private int id; // 用户ID private String name; // 用户名 private String sex; // 性别 private int age; // 年龄 public User(int id, String name, String sex, int age) { this.id = id; this.name = name; this.sex = sex; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Freemarker模板文件内容(sequence.ftl)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>输出Freemarker的Sequence</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> <#-- 输出用户名称 --> (1)输出用户名列表<br/> <#list names as name> ${name} </#list> <br/><br/> <#-- 显示用户信息表格 --> (2)显示用户信息表格 <table border="1"> <tr> <th>用户ID</th> <th>用户名</th> <th>性别</th> <th>年龄</th> </tr> <#list users as user> <tr> <td>${user.id}</td> <td>${user.name}</td> <td>${user.sex}</td> <td>${user.age}</td> </tr> </#list> </table> <br/> (3) 序列连接(["张三", "李四"] + ["王五", "赵六"])操作:<br/> <#list ["张三", "李四"] + ["王五", "赵六"] as name> - ${name}<br/> </#list> <br/> (4)序列片段(["a","b","c","d","e"][1..2]):<br/> <#assign seqs=["a","b","c","d","e"]> <#list seqs[1..2] as s> - ${s}<br/> </#list> <br/> (5)序列连接(["a","b","c","d","e"][2..])操作:<br/> <#-- ["a","b","c","d","e"][2..] as s方式和 seqs=["a","b","c","d","e"]一样的效果 --> <#list ["a","b","c","d","e"][2..] as s> - ${s}<br/> </#list> <br/> (6)取出序列中指定下标(从0开始;如:user[1])的值:<br/> 用户ID:${users[2].id}<br/> 用户名:${users[2].name}<br/> 性 别:${users[2].sex}<br/> 年 龄:${users[2].age}<br/> </body> </html>
结果如下:
(1)输出用户名列表
张三 李四 王武 赵牛 李强 王强 邢鑫
(2)显示用户信息表格
用户ID | 用户名 | 性别 | 年龄 |
---|---|---|---|
1 | 张三 | 男 | 21 |
2 | 李四 | 男 | 19 |
3 | 王武 | 女 | 20 |
4 | 赵牛 | 男 | 24 |
5 | 李强 | 女 | 27 |
(3) 序列连接(["张三", "李四"] + ["王五", "赵六"])操作:
- 张三
- 李四
- 王五
- 赵六
(4)序列片段(["a","b","c","d","e"][1..2]):
- b
- c
(5)序列连接(["a","b","c","d","e"][2..])操作:
- c
- d
- e
(6)取出序列中指定下标(从0开始;如:user[1])的值:
用户ID:3
用户名:王武
性 别:女
年 龄:20