测试类
/**
* HelloFreeMaker.java
* com.lin.freemaker
* zlj
* Jul 18, 2012
*
*/
package com.lin.freemaker;
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.lin.bean.Student;
import freemarker.template.Configuration;
import freemarker.template.Template;
/**
* Class HelloFreeMaker
* @author zlj
* @version
* @Date Jul 18, 2012 2:12:41 PM
*/
public class HelloFreeMaker {
private Configuration cfg;
public void init() throws IOException{
cfg=new Configuration();
File file=new File("src/templates");
if(!file.exists()){
file.mkdir();
}
cfg.setDirectoryForTemplateLoading(new File("src/templates"));
}
public void process()throws Exception{
Map<String, Object> root=new HashMap<String, Object>();
List<Student> list=new ArrayList<Student>();
list.add(new Student("123","000"));
list.add(new Student("234","001"));
list.add(new Student("456","001"));
root.put("name", "zlj");
root.put("msg", "FreeMaker实例");
root.put("list", list);
Template t=cfg.getTemplate("test.ftl");
t.process(root, new OutputStreamWriter(System.out));
}
public static void main(String[] args) throws Exception {
HelloFreeMaker hf=new HelloFreeMaker();
hf.init();
hf.process();
}
}
测试文件
test.ftl
FreeMarker 基本语法测试
<#--动态赋值-->
${name}
${msg}
<#--
freenarker 标签类似html标签
开始标签:(<#directivename parameters> 结束标签:</#directivename>) -->
<#--取list类型数据-->
<#list list as student>
student.name的值为: ${student.name}
<#if student.name="123">
if语法
<#elseif student.name="234">
else if 语法
<#else>
else 语法
</#if>
</#list>
<#-- x_index 变量索引 x_has_next 是否有下一个 break 跳出循环 -->
<#list ["星期一","星期二","星期三","星期四","星期五"] as x>
${x_index +1}. ${x} <#if x_has_next>,</#if>
<#if x = "星期四">
<#break>
</#if>
</#list>
<#--宏定义 类似c语言的宏定义-->
<#macro greet person>
<font size="+2"> Hello ${person}!</font>
</#macro>
<#--在宏定义中使用循环变量,通常用来重复嵌套内容,基本用法为:作为nested指令的参数,传递循环变量的实际值,而在调用自定义指令时,在标记的参数后面指定循环变量的名字。-->
<#macro repeat count>
<#list 1..count as x>
<#nested x,x/2,x==count />
</#list>
</#macro>
<@repeat count=4;c,halfc,last>
${c}, ${halfc} ,${last?string} <#-- 必须将bool值转换成strin 才能正常输出-->
<#if last>
last!
</#if>
</@repeat>
<#--调用定义的标签 需要使用 <@ -->
<@greet person="${name}" />
<#-- <#assign price = 42 /> 定义变量
根据默认格式(#setting 指令设置)将表达式结果转换成文本输出。 -->
<#setting number_format = "currency" />
<#assign price = 42 />
${price}
${price?string}
${price?string.number}
${price?string.currency}
${price?string.percent}
<#-- 输出值为日期值:根据默认格式(由 #setting 指令设置)将表达式结果转换成文本输出,可以使用内建的字符串函数格式化单个插值,-->
<#assign lastUpdated = "2009-01-07 15:05"?datetime("yyyy-MM-dd HH:mm") />
${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")};
${lastUpdated?string("EEE,MMM d,yy")};
${lastUpdated?string("EEEE,MMMM dd,yyyy,hh:mm:ss a '('zzz')'")};
${lastUpdated?string.short};
${lastUpdated?string.long};
${lastUpdated?string.full};
<#-- 数字格式化插值可采用#{expr;format}的形式来格式化数字,其中format可以是:
mX:小数部分最小X位 四舍五入
MX:小数部分最大X位
例如: -->
<#assign x = 2.582 />
<#assign y=4 />
#{x;M2};
#{y;M2};
#{x;m1};
#{y;m1};
#{x;m1M2};
#{y;m1M2};
<#-- Map集合
Map对象使用花括号包括,Map中的key-value对之间以英文冒号(:)隔开,多组key-value对之间以英文逗号(,) 隔开 例如 -->
<#assign score = {"语文":78,"数学":83,"Java":89} />
<#list score?keys as x>
${x}--->${score[x]};
</#list>
<#--截取字符串 -->
<#assign book="疯狂Ajax讲义" />
${book[0]}
${book[4]}
${book[1..4]}
<#-- 使用内建的函数。-->
<#assign x = 5>
${(x/2)?int?string.number}
${1.1?int}
${1.999?int}
${-1.9999?int}
${-1.1?int}
<#assign test="Tom & Jerry123" />
${test?html}
${test?upper_case?html}
测试结果 控制台输出
FreeMarker 基本语法测试
zlj
FreeMaker实例
student.name的值为: 123
if语法
student.name的值为: 234
else if 语法
student.name的值为: 456
else 语法
1. 星期一 ,
2. 星期二 ,
3. 星期三 ,
4. 星期四 ,
1, 0.5 ,false
2, 1 ,false
3, 1.5 ,false
4, 2 ,true
last!
<font size="+2"> Hello zlj!</font>
¥42.00
¥42.00
42
¥42.00
4,200%
2009-01-07 15:05:00 中国标准时间;
星期三,一月 7,09;
星期三,一月 07,2009,03:05:00 下午 (CST);
09-1-7 下午3:05;
2009年1月7日 下午03时05分00秒;
2009年1月7日 星期三 下午03时05分00秒 CST;
2.58;
4;
2.6;
4.0;
2.58;
4.0;
语文--->¥78.00;
数学--->¥83.00;
Java--->¥89.00;
疯
a
狂Aja
2
¥1.00
¥1.00
-¥1.00
-¥1.00
Tom & Jerry123
TOM & JERRY123
分享到:
相关推荐
c#基本语法if测试c#基本语法if测试c#基本语法if测试c#基本语法if测试
1. **日语语法大全整理笔记**:这是一份综合性的资料,可能包含了从基础到高级的日语语法要点,包括但不限于接续词、助动词、敬语、授受关系、被动语态、使役形、连用形、终止形等。这些笔记通常会以实例和解释相...
本资源摘要信息主要涵盖 JavaSE 基础语法测试题库的相关知识点,涵盖了环境变量、Java 源文件和编译后的文件扩展名、基本数据类型、时间转换、控制台输出、数组操作、排序算法、查找算法等多方面的内容。 一、环境...
多年积累的日语语法资源,希望对大家的日语学习有一定的帮助。
Freemarker 基本语法整理 作为一款流行的模板引擎,Freemarker 在 Struts2 框架中扮演着重要的角色。本文将对 Freemarker 的基本语法进行整理,涵盖输出、逻辑判断、循环遍历、宏等方面的知识点。 输出 在 ...
另外,主格和宾格是英语语法的基本概念。主格是指句子的主语,而宾格是指句子的宾语。例如"I am a student."中"I"是主格,而"a student"是宾格。同样,在句子"He is my friend."中"He"是主格,而"my friend"是宾格。...
net介绍及C#基本语法.ppt
02C语言基本语法知识[整理].pdf
Java基本语法大全
JavaScript基本语法.ppt,非常适合初学者,用后会帮助你很多
JAVA的基本语法及48个关键字! chm文档! 找了好久都找不到,只好自己做一个了! 分享一下...
JavaSE阶段,基本语法部分的思维导图,学习Java对于新人来说本来就比较难,我在这里自己把基本语法部分的知识点都进行了一个串联,做成了一个思维导图,可供初学者以及备考学生进行参考
Java 基本语法编程练习 Java 是一种广泛使用的高级编程语言,具有平台独立性、对象oriented 和大规模的标准库等特点。Java 基本语法编程练习是学习 Java 语言的基础,以下是 Java 基本语法编程练习的知识点总结: ...
jsp基本语法 本书由 中华电脑书库 整理制作, 仅供个人学习研究交流之用 版权归原作者所有,严禁作商业用途。否则一切后果自理
Html标记的基本语法和Dreamweaver的基本操作
一些DB2数据的基本SQL语法,供参考学习之用
这是我学习 React 写的第一个程序,也是React的最基本的语法,上传到这里,和大家交流学习
在英语语法中,be 动词是最基本也是最重要的动词之一。be 动词有多种用法,包括连结、描述、比较等。例如,在句子 “I am a student.” 中,be 动词用来连接主语和宾语,描述主语的身份。在句子 “She is a teacher....
C#基本语法PPT教程 1 理解运用 Visual Studio 2008 开发环境 ; 2 理解.net框架; 3 建立系统开发理念,理解系统开发流程; 4 掌握C#语言; 5 能熟练编写简单C#程序 6 能用C#开发数据库系统; 7 能用C#进行毕业设计...