本文主要介绍FreeMarker的使用
如有需要,可以参考
如有帮助,不忘 点赞 ❥
Thymeleaf模板引擎的使用
一、前期预热
1)是什么
FreeMarker是一款用java语言编写的模版引擎,它虽然不是web应用框架,但它很合适作为web应用框架的一个组件。
可以让(网站)程序实现界面与数据分离,业务代码与逻辑代码的分离, 这就大大提升了开发效率,良好的设计也使得代码重用变得更加容易。
2)传统JSP的弊端
- 项目目录结构繁琐
- 页面不简洁
- jsp内置错误页面不能覆盖springboot默认的错误页面
- 只能打成war不能打成jar
- 内置的jetty服务器不支持jsp
- 页面响应较慢,如果数据量较多
二、正文接入
!和 ?的用法
为了处理缺失变量,FreeMarker提供了两个运算符: 用于防止对象不存在而导致的异常
- ! : 指定缺失变量的默认值
- ?? : 判断某个变量是否存在,返回boolean值
${ item.creatorname ! "xxx" } // 不存在item.creatorname 便使用默认值xxx
$ {item.name ? default(‘xxx’) } // 存在item.name 便使用默认值xxx
/**例子**/
${(item.isShow=='Y')?string('是','否') } // 等于y 是 否则 否
${item.createTime?string?substring(11,19) //截取,先判断是否存在,存在则转换为String然后再进行截取
字符串输出的用法
//从控制层传过来一个key(name),用freemarker接收
//两种方式拼接字符串
${ "Hello ${name} "}
${ "Hello" + name }
//<#assign > 的用法,定义变量值
<#assign cname = "xxxx">
${cname}
运算的用法
<#-- 支持"+"、"-"、"*"、"/"、"%"运算符 -->
//定义两个变量
<#assign num1 = 2>
<#assign num2 = 3>
//对应运算
"+" : ${num1 + num2}
"-" : ${num1 - num2}
"*" : ${num1 * num2}
"/" : ${num1 / num2}
"%" : ${num1 % num2}
比较运算的用法
// > < 两种符号最好用 gte 和 lt 代替,否则容易出错
<#if num1 gte num2 >
${num1}
<#else>
${num2}
</#if>
字符串截取/区间的用法
//截取
${name[x]} //通过下标直接获取下标对应的字母
${name[0..n]} //起点下标..结尾下标截取字符串
//从一个字符串中截取子串 substring(start,end)
${‘str’?substring(0,0)} //结果为
${‘str’?substring(0,1)} //结果为s
${‘str’?substring(0,2)} //结果为st
${‘str’?substring(0,3)} //结果为str
//区间
<#assign x = 0..n > // 不需要用到 [ ]
常用函数的用法
<#assign data = "abCd">
第一个字母大写:${data?cap_first} //输出AbCd
所有字母小写:${data?lower_case} //输出abcd
所有字母大写:${data?upper_case} //输出ABCD
<#assign floatData = 12.34>
数值取整数:${floatData?int} //输出12
时间格式化:${dateTime?string("yyyy-MM-dd")}
空判断和集合
//获取集合的长度:${users?size}
<#if (documents)?? && (documents?size >0)>
<#list documents as item>
... // 遍历
</#list>
<#else>
...
</#if>
map集合的用法
//先用<#assign> 创建一个map
<#assign stu={"name" : "张三", "age" : 22}>
//通过 Key获取 Value值:
${ stu["name"]}
//通过 Keys遍历 Map:
<#list stu?keys as key>
Value: ${ stu[key] }
</#list>
//通过Value遍历Map:
<#list stu?values as value>
Value: ${value}
</#list>
include指令
<#include "../../common/common.page.ftl"> // 导入其他页面元素
操作布尔值的用法
//string 用于将布尔值转换为字符串输出
//true转为“true”,false转换为“false”
${test?string (“yes”,”no”)} //如果布尔值是true,那么返回“yes”,否则返回no
操作数字的用法
// c 用于将数字转换为字符串
${123?c} // 结果为123
// number 将字符串转换为数字
${“111.11”?number} 结果为111.11
日期的用法
//将字符串转为日期
<#--date用来转换为日期-->
<#assign sun = "2019-08-28"/>
${sun?date("yyyy-MM-dd")} //结果: 2019-8-28
<#--time用来转换为时间-->
<#assign li = "10:31:21"/>
${li?time("HH:mm:ss")} //结果:10:31:21
<#--datetime用来转换为日期和时间-->
<#assign qian = "2019-08-28 10:31:21"/>
${qian?datetime("yyyy-MM-dd HH:mm:ss")} //结果:2019-08-28 10:31:21
//将 Long类型的时间戳转为时间
<#--number_to_datetime -->
${item.time?number_to_datetime} //默认的格式是“yyyy-MM-dd hh:mm:ss”。