一、特性
支持:HTML、XML、RTF、java
易于嵌入到产品中:轻量级;
不需要 Servlet 环境
环境的搭建 pom 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
设置 FreeMarKar 模板引擎 yml 配置
#设置 FreeMarKar 模板引擎
freemarker:
request-context-attribute: request # req 访问
request suffix: .ftl #模板后缀名
content-type: text/html #文档类型
charset: UTF-8 #页面编码格式
cache: false #缓存配置 false 关掉
template-loader-path: classpath:/templates/ #模板加载路径 按需配置
enabled: true
settings: number_format: '0.##' #数字格式化,无小数点
二、基本数据类型
布尔型
${变量?string} true
日期型
$ {变量?string('yyyy-MM-dd')} 2021-06-16
$ {变量?string('yyyy.MM.dd')} 2021.06.16
$ {变量?string('yyyy 年 MM 月 dd 日')} 2021 年 06 月 16 日
$ {变量?string('yyyy.MM.dd HH:mm:ss')} 2021.06.16 10:43:18
$ {变量?string('yyyy-MM-dd HH:mm:ss')} 2021-06-16 10:46:50
$ {变量?string('yyyy 年 MM 月 dd 日 HH:mm:ss')} 2021 年 06 月 16 日 10:49:34
$ {变量?date} 2021-6-16
$ {变量?datetime} 2021-6-16 10:43:18
$ {变量?time} 10:45:20
数值型 数值型(默认)
$ {变量} 20
$ {变量?c} 3000 去掉 3,000 的 逗号
货币型
$ {变量?string.currency} ¥0.57
百分比型
$ {变量?string.percent} 57%
字符串型
$ {变量} freemarker hello world
$ {变量?cap_first} Freemarker hello world 首字母大写输出
$ {变量?uncap_first} freemarker hello world 首字母小写输出
$ {变量?upper_case} FREEMARKER HELLO WORLD 字母转大写
$ {变量?lower_case} freemarker hello world 字母转小写
$ {变量?length} 22 字符串长度
$ {变量?starts_with("free")?string} true 判断 是否以**开始
$ {变量?ends_with("world")?string} true 判断 是否以**结束
截取字符串 并显示
${变量[0..10]} 单个字符串截取
$(对象.属性[0..10]) 对象的属性数据截取
转换类型
字符串转 数字 ${ 变量?number }
做判断的话
左边大于右边 <#if 变量?number gt 0 >
....
</#if>
左边小于右边 <#if 变量?number lt 3 >
.......
</#if>
等于 <#if 变量?number == 2 >
.......
</#if>
转换类型
数字转 字符串 ${ 变量?string }
做判断的话
等于 <#if 变量?string == "R" >
.......
</#if>
sequence 类型
数组遍历
获取总长度 ${arrayList?size} 意思就是===> 集合?size
获取 下标 ${bean_index} 意思就是===> 集合的具体元素_index
获取最后一个 ${bean_has_next} 意思就是===> 集合的具体元素_has_next
<#if arrayString??>
<#list arrayString as str> ${str}
</#list>
</#if>
集合遍历 对象
<#if userList??>
<#list userList as user >
${user.id} +${user.userName}+${user.passWord}
</#list>
</#if>
升序
<#if userList??>
<#list userList?sort as user>
${user.id}+${user.userName}+${user.passWord}
</#list>
</#if>
倒序
<#if userList??>
<#list userList?reverse as user>
${user.id}+${user.userName}+${user.passWord}
</#list>
</#if>
根据某个属性字段进行排序
升序
<#if userList??>
<#list userList?sort_by("userName") as user>
${user.id}+${user.userName}+${user.passWord}
</#list>
</#if>
hash 类型
<#if nameMap??>
<#list nameMap?keys as str>
${str}=${nameMap[str]}
</#list>
</#if>
三、指令
定义变量
<#assign x>
....
</#assign>
运算符
?size 长度
算术运算符
+、-、*、/、%
逻辑运算符
&&、||、!
比较运算符
大于号: > ( gt ) (推荐使用 gt)
小于号: < ( lt ) (推荐使用 lt)
大于等于: >= ( gte ) (推荐使用 gte)
小于号: <= ( lte ) (推荐使用 lte)
等于: ==
不等于 : !=
空值运算符
判断是否为空,返回布尔类型 : ??
判断是否为空,返回布尔类型 : ! (或者 !"" 表示为空时赋值为默认值 "" 空串 )
定义宏
<#macro test01>
hello Freemarker
</#macro>
调用宏
<@test01></@test01>