Freemarker模板中输出List数据

测试在Freemarker的模板中输出控制中的List数据列表,List列表中可以是一个自定义的JavaBean。实际上Freemarker将控制器返回的数据转化成JSON格式的数据。

测试在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

点击查看更多 Freemarker 知识……

不是每一次努力都有收获,但是,每一次收获都必须努力。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号