freemarker入门 list指令


当需要用列表来遍历集合的内容时,list指令是非常好用的.

list指令语法:

<#list sequence as loopVariable>repeatThis</#list> 

sequence         是从hash表中放入的集合的键值

loopVariable    循环变量也就是迭代的当前项,这个变量仅仅只是存在于list开闭标签之间.

项目结构:



Test.java

package org.freemarker.test;

import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class Test {
	public static void main(String[] args) throws IOException,
			TemplateException {

		Configuration cfg = new Configuration();
		// 指定模板文件从何处加载的数据源,这里设置成一个文件目录。
		cfg.setDirectoryForTemplateLoading(new File("./template"));
		// 指定模板如何检索数据模型,这是一个高级的主题了…
		// 但先可以这么来用:
		cfg.setObjectWrapper(new DefaultObjectWrapper());

		
		// 创建根哈希表
		Map<String,Object> root = new HashMap<String,Object>();
		// 在根中放入用户名称数组
		root.put("names", new String[]{"admin","zhangsan","lisi"});
		
	    //在hash表中放入对象
		User user1=new User("A", "A001");
			 user1.addFriend(new User("A-A", "A-A001"));
			 user1.addFriend(new User("A-B", "A-B002"));
			 user1.addFriend(new User("A-C", "A-C003"));
			 
	    User user2=new User("B", "B001");
			 user2.addFriend(new User("B-A", "B-A001"));
			 user2.addFriend(new User("B-B", "B-B002"));
			 user2.addFriend(new User("B-C", "B-C003"));
	  
	    //将用户信息放入集合中
	    List<User> users=new ArrayList<User>();
	    users.add(user1);
	    users.add(user2);
	    
	    //放入hash表中
	    root.put("users", users);
	    
		
		// 从配置Configuration对象中获取模版
		Template temp = cfg.getTemplate("list.ftl");
		Writer out = new OutputStreamWriter(System.out);
		temp.process(root, out);
		out.flush();
		out.close();
	}
}


User.java

package org.freemarker.test;

import java.util.ArrayList;
import java.util.List;

/**
 * @author YHC 用户实体类
 */
public class User {

	private String userId;//用户id

	private String username;//用户名称
	
	private List<User> friends = new ArrayList<User>();//用户好友

	public User() {
	}

	public List<User> getFriends() {
		return friends;
	}

	public User(String username, String userId) {
		this.username = username;
		this.userId = userId;
	}

	public String getUserId() {
		return userId;
	}

	public String getUsername() {
		return username;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	/**
	 * 添加好友
	 * @param friend 用户对象
	 */
	public void addFriend(User friend){
		friends.add(friend);
	}
}

list.ftl

<#--
  遍历普通字符串数组
 -->
<#list names as name>
  ${name}
</#list> 

<#--
 遍历集合对象
-->
<#list users as user>
---------${user.userId}${user.username}
    <#--遍历对象的自对象集合
         注意:此子对象必须要有getter方法-->
	<#list user.friends as friend>
	-----------------------${friend.userId}${friend.username}
	</#list>
</#list>



最终输出结果:

  admin
  zhangsan
  lisi

---------A001A
	-----------------------A-A001A-A
	-----------------------A-B002A-B
	-----------------------A-C003A-C
---------B001B
	-----------------------B-A001B-A
	-----------------------B-B002B-B
	-----------------------B-C003B-C




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值