package com.sxt.test.freemarker;import java.io.File;import java.io.OutputStreamWriter;import java.io.Writer;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 freemarker.template.Configuration;import freemarker.template.Template;public class Test1 {public static void main(String[] args) throws Exception {//创建Freemarker配置实例Configuration cfg = new Configuration();cfg.setDirectoryForTemplateLoading(new File("templates")); //创建数据模型Maproot = new HashMap ();root.put("user", "测试用户");//javabean可以自动转化!类似于我们前面学习的EL表达式!User u = new User();u.setUname("小红");root.put("user1", u);User u2 = new User("小明",new Address("中国","北京"));root.put("user2", u2);//map/list容器List list = new ArrayList();list.add(new Address("中国","北京"));list.add(new Address("中国","上海"));list.add(new Address("美国","纽约")); root.put("lst", list);//普通标量??root.put("num0", 18);root.put("b2", true);root.put("date1", new Date());root.put("random", new Random().nextInt(100));root.put("htm2", "粗体");//加载模板文件Template t1 = cfg.getTemplate("a.ftl");//显示生成的数据Writer out = new OutputStreamWriter(System.out);t1.process(root, out);out.flush();}}
2./templates/a.ftl
普通标量测试:<#if num0==18>18岁,成年了! <#--数字 --><#if user=="测试用户">欢迎你 <#--字符串--><#if b2>b2是true! <#--布尔值-->${date1?string("yyyy-MM-dd HH:mm:ss")}<#-- ${date1.toString()}????时间怎么处理?? -->-----------------------------------------------普通变量和javabean测试:你好啊,${user},${user1.uname},今天你的精神不错!${user2.uname}来自${user2.addr.city},那里好玩吗?-----------------------------------------------List数据测试:${lst[0].city},${lst[1].city},${lst[2].city},------------------------------------------------内建函数:${htm2?html}-------------------------------------------------测试空值处理:<#-- ${sss} 没有定义这个变量,会报异常! -->${sss!} <#--没有定义这个变量,默认值是空字符串! -->${sss!"abc"} <#--没有定义这个变量,默认值是字符串abc! -->------------------------------------------------if语句测试:${user}是<#if user=="老师">我们的老师 ------------------------------------------------if else 语句测试:<#if num0 gt 18> <#--不是使用>,大部分时候,freemarker会把>解释成标签结束! --> 及格!<#else> 不及格! ---------------------------------------------------if else if else语句测试:<#if random gte 90> 优秀!<#elseif random gte 80> 良好!<#else> 一般! ----------------------------------------------------测试list指令:<#list lst as dizhi > dizhi ----------------------------------------------------测试include指令:<#include "included.txt" />----------------------------------------------------<#macro m1> <#--定义指令m1 --> aaabbbccc dddeeefff <@m1 /><@m1 /> <#--调用上面的宏指令 -->------------------------------------------------------<#macro m2 a b c > ${a}--${b}--${c} <@m2 a="测试1" b="测试2" c="测试3" />----------------------------------------------------<#macro border>
<#nested> |