1 介绍
FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
2 快速入门
- 引入依赖
|
|
- 配置项
|
|
- 模板文件编写
在resources下创建templates,此目录为freemarker的默认模板存放目录。
在templates下创建模板文件example.ftl ,模板中的插值表达式最终会被freemarker替换成具体的数据。
注:freemarker模板文件通常都是以ftl作为扩展名,也可以为html、xml、jsp等
|
|
freemarker作为springmvc一种视图格式,默认情况下SpringMVC支持freemarker视图格式。
- 搭建springbootweb工程,编写Controller
|
|
启动项目后,返回填充后的模板。
3 Freemarker指令语法
基础语法种类
- 注释,即
<#-- -->
,介于其之间的内容会被freemarker忽略
<#--我是一个freemarker注释-->
- 插值(Interpolation):即
${..}
部分,freemarker会用真实的值代替${..}
Hello ${name}
- FTL指令:和HTML标记类似,名字前加#予以区分,Freemarker会解析标签中的表达式或逻辑。
<# >FTL指令</#>
- 文本,仅文本信息,这些不是freemarker的注释、插值、FTL指令的内容会被freemarker忽略解析,直接输出内容。
<#--freemarker中的普通文本-->
我是一个普通的文本
FTL指令
- 集合指令-List
<#list stus as stu>
<tr>
<td>${stu_index+1}</td>
<td>${stu.name}</td>
<td>${stu.age}</td>
<td>${stu.money}</td>
</tr>
</#list>
${k_index}:得到循环的下标,使用方法是在stu后边加"_index",它的值是从0开始
<#-- 获取map中的值方式1:map['keyname'].property -->
<#-- 获取map中的值方式2:map.keyname.property -->
<#list userMap?keys as key>
key:${key}--value:${userMap["${key}"]}
</#list>
- 判断指令-If
<#if stu.name='小红'>
<tr style="color: red">
<td>${stu_index}</td>
<td>${stu.name}</td>
<td>${stu.age}</td>
<td>${stu.money}</td>
</tr>
<#else >
<tr>
<td>${stu_index}</td>
<td>${stu.name}</td>
<td>${stu.age}</td>
<td>${stu.money}</td>
</tr>
</#if>
在freemarker中,判断是否相等,=与==是一样的
运算符
- 算数运算符
加法: +
减法: -
乘法: *
除法: /
求模 (求余): %
- 比较运算符
比较运算符 | 说明 |
---|---|
=或者== | 判断两个值是否相等 |
!= | 判断两个值是否不等 |
>或者gt | 判断左边值是否大于右边值 |
>=或者gte | 判断左边值是否大于等于右边值 |
<或者lt | 判断左边值是否小于右边值 |
<=或者lte | 判断左边值是否小于等于右边值 |
- 逻辑运算符
逻辑与:&&
逻辑或:||
逻辑非:!
空值处理
- 判断某变量是否存在使用
??
<#if stus??> <#-- 防止stus为空报错 -->
<#list stus as stu>
......
</#list>
</#if>
- 缺失变量默认值使用
!
缺失变量默认值使用 “!”
使用!要以指定一个默认值,当变量为空时显示默认值
例:${name!’’}表示如果name为空显示空字符串。‘‘为两个单引号。
如果是嵌套对象则建议使用()括起来
例:${(stu.name)!’’}表示,如果stu或name为空默认显示空字符串。
内建函数
- 集合的大小
${集合名?size}
- 日期格式化
显示年月日: ${today?date}
显示时分秒:${today?time}
显示日期+时间:${today?datetime}
自定义格式化:${today?string("yyyy年MM月")}
- 转字符串
${point?c}
- json转对象
<#assign text="{'bank':'工商银行','account':'10101920201920212'}" />
<#assign data=text?eval />
开户行:${data.bank} 账号:${data.account}
4 静态输出文件
|
|