赞
踩
FreeMarker语法也包含一些内置的函数--内建函数。
下面我们来介绍一些常用的内建函数。这里使用的项目依然是之前的案例项目。
主函数写法如下:
- package cn.asiainfo.test.freemarker;
- import java.io.File;
- import java.io.FileWriter;
- import java.io.Writer;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import freemarker.template.Configuration;
- import freemarker.template.Template;
-
- public class TestFreeMarker {
-
- public static void main(String[] args) throws Exception {
- // 1.创建configuration对象,构造方法参数是freemarker的版本号
- Configuration configuration = new Configuration(Configuration.getVersion());
- // 2.设置模板文件所在的路径,文件路径可以右键propertity查看,路径需要“\\”
- configuration.setDirectoryForTemplateLoading(new File("F:\\workspace_Item3\\spring-demo-freemarker\\src\\main\\resources"));
- // 3.设置模板文件的使用的字符集,一般使用UTF-8
- configuration.setDefaultEncoding("utf-8");
- // 4.加载一个模板,创建一个模板对象
- Template template = configuration.getTemplate("test.ftl");
- // 5.创建一个模板使用的数据集,pojo/map/list,常用map
- Map map = new HashMap();
- map.put("name", "八戒");
- map.put("message", "猪八戒在高老庄背媳妇");
- //5.创建一个模板使用的数据集,list
- List people = new ArrayList();
- people.add("悟空");
- people.add("八戒");
- people.add("沙僧");
- //将list集合添加到map中
- map.put("people", people);
- // 6.创建一个writer对象,来制定生成的文件名
- Writer out = new FileWriter("F:\\test.html");
- // 7.调用模板对象的process方法输出文件
- template.process(map, out);
- // 8.关闭流
- out.close();
- }
-
- }

1.首先是内建函数的语法格式:变量+?+函数名称
2.常用内建函数:
(1)获取集合大小:${集合名?size}
例如:
- <html>
- <head>
- <meta charset="utf-8">
- <title>Freemarker小DEMO </title>
- </head>
- <body>
-
- <#--list指令可以对list集合进行遍历-->
- <#--if指令可以对所取值进行判断进入那个流程-->
- <#list people as p>
- <#if p="悟空">
- 齐天大圣--孙悟空<br>
- <#elseif p="八戒">
- 天蓬元帅--猪悟能<br>
- <#else>
- 卷帘大将--沙悟净<br>
- </#if>
- </#list>
-
- people集合共 ${people?size} 条记录
- </body>

结果如下:
(2)转换JSON字符串为对象 <assign 对象名=text?eval />
例:
- <#assign text="{'name':'孙悟空','skill':'72变' }">
- <#assign person=text?eval />
- 姓名:${person.name} 绝招:${person.skill}<br>
结果如下:
(3)日期格式化:
Java代码中加入
map.put("today", new Date());
test.ftl加入
- 当前日期:${today?date} <br>
- 当前时间:${today?time} <br>
- 当前日期+时间:${today?datetime} <br>
- 日期格式化: ${today?string("yyyy年MM月")}
显示结果如下:
3.常用运算符:
(1)空值处理运算符
判断某变量是否为空:“??”
例如:
- <#if name??>
- ${name?}
- <#else>
- name不存在
- </#if>
(2)空值替代运算符 “!”
例如:
${username!'猪八戒'}
运行结果如下:
(3)算术运算符:
FreeMarker支持的算术运算符有:+,-, *, /, %
(4)逻辑运算符:
&&(逻辑与) ,||(逻辑或), !(逻辑非)
(5)比较运算符:
1 =或者==:判断两个值是否相等.
2 !=:判断两个值是否不等.
3 >或者gt:判断左边值是否大于右边值
4 >=或者gte:判断左边值是否大于等于右边值
5 <或者lt:判断左边值是否小于右边值
6 <=或者lte:判断左边值是否小于等于右边值
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。