package com.ninemax.test;
import java.io.File;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import com.ninemax.model.User;
import freemarker.template.Configuration;
import freemarker.template.Template;
public class FreeMarkerByOne {
private Configuration cfg;
@SuppressWarnings("all")
public void init() throws Exception {
// 初始化freemarker配置
cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File("D:\\freemarker\\src"));
}
public void pro() throws Exception {
// 创建数据模型
Map<String, Object> map = new HashMap<String, Object>();
// 填充数据
map.put("score", new Random().nextInt(100));
User u1 = new User();
u1.setName("DarkerInOne");
u1.setPassword("PasswordInOne");
User u2 = new User();
u2.setName("DarkerInTwo");
u2.setPassword("PasswordInTwo");
List<User> list = new ArrayList<User>();
list.add(u1);
list.add(u2);
map.put("userList", list);
map.put("time", new Date());
map.put("address", "北京,上海,杭州");
// 加载模板文件
Template t = cfg.getTemplate("user.ftl");
// 显示生成后的数据
t.process(map, new OutputStreamWriter(System.out));
}
public static void main(String[] args) throws Exception {
FreeMarkerByOne fm = new FreeMarkerByOne();
fm.init();
fm.pro();
}
}
user.ftl文件:
--------------if语句的使用----------------
<#if score gte 60>
及格
<#elseif score gte 80&&score lte 90>
良好
<#else>
高材生
</#if>
--------------空值判断、默认值---------------
${name!"未定义"}
--------------判断值是否存在------------
<#if name??>
name存在
<#else>
name不存在
</#if>
-------------使用list遍历数据--------------
<#list userList as user>
<#if user_has_next> 最后一组:${user.name}-${user.password}
<#else>${user.name}-${user.password}
</#if>
</#list>
-------------其他内建函数-----------------
(1)日期格式化
${time?string("yyyy-MM-dd")}
(2)截取字符串
${address?substring(0,2)}
(3)indexof的使用
${address?last_index_of(",")}
(4)split的使用
<#list "12,13,14,15"?split(",") as item>
${item}
</#list>
输出:
--------------if语句的使用----------------
及格
--------------空值判断、默认值---------------
未定义
--------------判断值是否存在------------
name不存在
-------------使用list遍历数据--------------
最后一组:DarkerInOne-PasswordInOne
DarkerInTwo-PasswordInTwo
-------------其他内建函数-----------------
(1)日期格式化
2016-03-21
(2)截取字符串
北京
(3)indexof的使用
5
(4)split的使用
12
13
14
15