freemarker 入门

FreemarkerUtil.java

publicclassFreemarkerUtil{

//获得template对象

publicTemplategetTemplate(Stringname){

try{

//通过Configuration对象读取相应的ftl文件

Configurationconfig=newConfiguration();

//设置flt文件目录

config.setClassForTemplateLoading(this.getClass(),"/cn/itcast/freemarker/template/ftl/");

//在ftl目录中找到具体的模板文件

Templatetemp=config.getTemplate(name);

returntemp;

}catch(Exceptione){

e.printStackTrace();

thrownewRuntimeException(e.getMessage());

}

}

//输出到控制台

publicvoidcprint(Stringname,Map<String,Object>root){

try{

//获得Tempalte对象

Templatetemp=this.getTemplate(name);

//输出到控制台

temp.process(root,newPrintWriter(System.out));

}catch(Exceptione){

e.printStackTrace();

thrownewRuntimeException(e.getMessage());

}

}

//输出到本地电脑的某个盘符上

publicvoiddprint(Stringname,Map<String,Object>root,StringoutFile){

Writerout=null;

try{

//获得Template对象

Templatetemp=this.getTemplate(name);

out=newOutputStreamWriter(newFileOutputStream("F:\\freemarker\\ftl\\"+outFile),"GBK");

temp.process(root,out);

}catch(Exceptione){

e.printStackTrace();

thrownewRuntimeException(e.getMessage());

}

}

}

ftl

<#--freemarker的基本语法-->

<#--assign定义一个变量-->

<#--number和string类型可以直接输出-->

<#assigni=5/>

i是:${i}

<#assignstr="我是一个字符串"/>

str是:${str}

<#--boolean类型的处理-->

<#assignflag=true/>

flag是:${flag?string("yes","no")}

flag是:${flag?string}

<#--日期转成字符串(time是后台传过来的)-->

当前时间:${time?string("yyyy-MM-ddHH:mm:ss")}

<#--字符串转日期-->

<#assigndd="1992-09-1117:21:15"/>

日期:${dd?date("yyyy-MM-ddHH:mm:ss")}<#--结果是:1992-9-11-->

日期:${dd?datetime("yyyy-MM-ddHH:mm:ss")}<#--结果是:1992-9-1117:21:15-->

日期:${dd?time("yyyy-MM-ddHH:mm:ss")}<#--结果是:17:21:15-->

<#--字符串的连接方式-->

${"hello"+name}

${"hello${name}"}

<#--两者的结果都是:hello狗日的字符串!-->

<#--includeimport指令-->

<#include"/inc/include.ftl"/>

<#import"/inc/import.ftl"asmm/>

${mm.tt}

<#assigntt="现在老子很不爽!"inmm/>

${mm.tt}<#--修改成功!-->

<#--自定义指令(macro指令)类似于java的方法-->

<#macromm>

<p>这是一个宏指令</p>

<h2>这是宏指令的内容!</h2>

</#macro>

<#--可以调用n次-->

<@mm/><@mm/>

<#macronnabc>

${a}----${b}----${c}

</#macro>

<@nna="张三"b="李四"c="王五"/>

<@nn"jack""罗志祥""5435435"/>

<#--nested指令-->

<#macroborder>

<tableborder="1px"cellspacing="0px">

<tr>

<td><#nested/></td>

</tr>

</table>

</#macro>

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

<#--取整数-->

${2.444?int}<#--结果是:2-->

<#--

字符串使用的内建函数:

html:字符串中所有的特殊HTML字符都需要用实体引用来代替(比如<代替&lt;)。

cap_first:字符串的第一个字母变为大写形式

lower_case:字符串的小写形式

upper_case:字符串的大写形式

trim:去掉字符串首尾的空格

序列使用的内建函数:

size:序列中元素的个数

数字使用的内建函数:

int:数字的整数部分(比如-1.9?int就是-1)

-->

相关推荐