博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FreeMarker之入门实例
阅读量:7153 次
发布时间:2019-06-29

本文共 2691 字,大约阅读时间需要 8 分钟。

下载freemarker包,导入到工程 以freemarker-2.3.16为例

package com.zns.test;import java.io.File;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 com.zns.bean.Person;import freemarker.template.Configuration;import freemarker.template.Template;public class Test1 {    public static void main(String[] args) throws Exception {        //创建Freemarker配置实例        Configuration configuration=new Configuration();        configuration.setDirectoryForTemplateLoading(new File("mytemplates"));        //加载模板文件        Template t1=configuration.getTemplate("1.ftl");        //数据        Map
root=new HashMap<>(); root.put("userid", 1); root.put("username", "张三"); root.put("score", 80); List
list1=new ArrayList<>(); list1.add(new Person(1, "张三")); list1.add(new Person(2, "李四")); root.put("list1", list1); List
> mapList1=new ArrayList
>(); Map
map1=new HashMap<>(); map1.put("id", "11"); map1.put("name", "name11"); Map
map2=new HashMap<>(); map2.put("id", "22"); map2.put("name", "name22"); mapList1.add(map1); mapList1.add(map2); root.put("mapList1", mapList1); //显示生成 Writer out=new OutputStreamWriter(System.out); t1.process(root, out); out.flush(); out.close(); }}

 

 

在mytemplates下增加一个1.ftl文件

hello,${username}<#if userid==1>        userid为1
<#if userid==1> userid为1<#else> userid不为1
<#if score gte 80> 优秀<#elseif score gte 70> 良好<#elseif score gte 60> 及格<#else> 不及格
<#switch username> <#case "张三"> 张三 <#break> <#case "李四"> 李四 <#break> <#default> d
<#switch userid> <#case 1> 111 <#break> <#case 2> 222 <#break> <#default> d
<#-- ${item_index}为列表索引 --><#list list1 as item> ${item_index + 1} --- ${item.id},${item.name}
<#-- 遍历List map --><#list mapList1 as item> ${item_index + 1} --- ${item.id},${item.name}
<#-- 定义变量 用assign --><#assign productid="100">产品id为${productid}<#-- 自定义宏 用macro --><#macro macro1>

宏1...

<#-- 调用宏 --><@macro1>
<#-- 带参数的宏 --><#macro macro2 param1 param2> 参数1为${param1},参数2为${param2}
<#-- 调用带参数的宏 --><@macro2 param1="张三" param2="李四">
<#-- nested宏 --><#macro macro3> 你好啊,<#nested>
<@macro3>张三

 

 

一个ftl引用另外一个ftl

 

a.ftl如下

<#-- 引入b.ftl --><#import "b.ftl" as bb />${bb.productname}<@bb.macro1 param1="张三" param2="李四" />

 

b.ftl如下

<#assign productname="产品1"><#macro macro1 param1 param2> 参数1为${param1},参数2为${param2}

 

转载于:https://www.cnblogs.com/zengnansheng/p/10385970.html

你可能感兴趣的文章
AutoMapper使用手册(一)
查看>>
基本类型赋值转换规则表
查看>>
hackerrank-knapsack
查看>>
SessionFactory的创建和Session的获得
查看>>
Hybrid框架UI重构之路:四、分而治之
查看>>
iOS项目的目录结构(Cocoa China)
查看>>
取消word中所有超链接
查看>>
javascript:addEventListener
查看>>
Mysql函数INSTR、LOCATE、POSITION VS LIKE
查看>>
atoi()函数的实现
查看>>
基于.net开发chrome核心浏览器【三】
查看>>
多种方法实现Loading(加载)动画效果
查看>>
AABB边框、OBB边框、通过比较球包围
查看>>
Atitit. 软件开发中的管理哲学--一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向...
查看>>
基于opencv的小波变换
查看>>
JS产生随机数的几个用法!
查看>>
Android开发UI之ViewPager及PagerAdapter
查看>>
浏览器默认样式(User Agent Stylesheet)
查看>>
C语言宏定义技巧
查看>>
所有Mac用户都需要知道的9个实用终端命令行
查看>>