Freemaker的了解

freemarket 模板技术

与web容器没什么关系

可以用struct2作为视图组件

 

第一步导入jar包

项目目录下建立一个templates目录

在此目录下建立一个模板文件a.ftl文件

 

Java代码

创建实例 –创建模板目录—创建数据模型(树状的)--加载模板文件--- 生成数据(需要一个输出流)

 

import java.io.File;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.util.HashMap;

import java.util.Map;

 

import freemarker.template.Configuration;

import freemarker.template.Template;

 

public class Test_two {

    public static void main(String[] args) throws Exception {

        //创建freemarker配置实例

        Configuration cfg=new Configuration();

        //创建模板目录

        cfg.setDirectoryForTemplateLoading(new File("templates"));

        

        //创建数据模型

        Map root=new HashMap();

        root.put("user", "老程");

        //加载模板文件

        Template t1=cfg.getTemplate("a.ftl");

        

        //显示生成的数据//map里的数据和模板合并到一起

        Writer out=new OutputStreamWriter(System.out);

        t1.process(root, out);

        out.flush();

        out.close();

        

        

    }

}

<#if user=="老高">我们的老师</#if>

数据类型

Gt大于

Gte大于等于

遍历集合

<#list lst as dizi>

<b>${dizhi..}</b><br/>

</#list>

包含指令

<#include "filename"/>

定义宏指令

<#macro ml>

    <b>aaabb</b>

    <b>aaabb</b>

</#macro>

调用宏:<@ml />

也可传递参数,并对带参数操作

 

Nested指令

<#macro border >

<table border=4 cellspacing=0 cellpadding=4><tr><td>

<#nested>

</td></tr></table>

</#macro>

<@border > 表格中的内容</@border>

<#assign mail="111.cpm">定义变量的

命名空间

<#improt "filename" as bb/>

可以通过 in bb 给bb里的东西赋值

 

时间对象的格式化

${date?string("yyyy-MM-dd HH:mm:ss")}

 

FreeMarker提供两个运算符来避免空值:
1. !: 指定缺失变量的默认值;
2. ??:判断变量是否存在。
!运算符有两种用法:variable!或variable!defaultValue。第一种用法不给变量指定默认值,表明默认值是空字符串、长度为0的集合、或长度为0的Map对象。
使用!运算符指定默认值并不要求默认值的类型和变量类型相同。

测试空值处理:

<#-- ${sss} 没有定义这个变量,会报异常! -->

${sss!} <#--没有定义这个变量,默认值是空字符串! -->

${sss!"abc"} <#--没有定义这个变量,默认值是字符串abc -->

 

    ??运算符返回布尔值,如:variable??,如果变量存在,返回true,否则返回false。

    

posted @ 2015-12-04 14:31  平常心cz  阅读(283)  评论(0编辑  收藏  举报