目录
Freemarker
1.1.什么是Freemarker
1.2.Freemarker模板组成部分
FreeMarker模板文件主要由如下4个部分组成:
FreeMarker与Web容器无关
1.3.优点
FreeMarker常见的方法:
字符串类型处理:
方法 | 含义 |
---|---|
?substring(start,end) | 截取字符串(左闭右开) |
?uncap_first | 首字母小写输出 |
?cap_first | 首字母大写输出 |
?lower_case | 字母转小写输出 |
?upper_case | 字母转大写输出 |
?length | 获取字符串长度 |
?starts_with("xx")?string | 是否以指定字符开头(boolean类型) |
?ends_with("xx")?string | 是否以指定字符结尾(boolean类型) |
?index_of("xx") | 获取指定字符的索引 |
?trim | 去除字符串前后空格 |
?replace("xx","xx") | 替换指定字符串 |
字符串空值情况处理:
2.2.2.数值
2.2.3.布尔值
直接写 true
或者 false
就表示一个布尔值了,不需使用引号。
${flag?c}<br> ${flag?string}<br> ${flag?string("yes","no")}<br>
2.2.4.日期
日期变量可以存储和日期/时间相关的数据。
日期格式输出:
输出方式 | 说明 |
---|---|
?date | 年月日 |
?time | 时分秒 |
?datetime | 年月日时分秒 |
?string("自定义格式") | 指定格式 |
2.3.常见指令
2.3.1.处理不存在的值
当试图访问一个不存在的变量时, FreeMarker 将会报错而导致模板执行中断。 通常我们可以使用两个特殊操作符来压制这个错误,控制这种错误情况。被控制的变量可以是顶层变量,哈希表或序列的子变量。 此外这些操作符还能处理方法调用的返回值不存在的情况。
-
默认值操作符
使用形式: unsafe_expr!default_expr
或 unsafe_expr!
or (unsafe_expr)!default_expr
或 (unsafe_expr)!
${message!"default Value."} <#assign message="Zking"> ${message!"default Value."}
输出结果如下:
default Value. Zking
如果默认值被省略了,那么结果将会是空串,空序列或空哈希表。(这是 FreeMarker 允许多类型值的体现)请注意,如果想让默认值为 0
或 false
,则不能省略它。
(${message!}) <#assign message = "Zking"> (${message!})
-
不存在值检测操作符
使用形式: unsafe_expr??
或 (unsafe_expr)??
<#if name??> 存在 <#else> 不存在 </#if>
assign
如本次 使用的ctx:
获取到了yml中的
2.3.4.list
list
指令执行在 list
开始标签和 list
结束标签 ( list
中间的部分) 之间的代码, 对于在序列(或集合)中每个值指定为它的第一个参数。 对于每次迭代,循环变量将会存储当前项的值。
循环变量仅仅存在于 list
标签体内。 而且从循环中调用的宏/函数不会看到它(就像它只是局部变量一样)。
<#list sequence as item> Part repeated for each item <#else> Part executed when there are 0 items </#list>
注意:
-
else
部分是可选的, 而且仅仅从 FreeMarker 2.3.23 版本开始支持。 -
sequence
: 将我们想要迭代的项,算作是序列或集合的表达式 -
item
: 循环变量的名称 (不是表达式)
<#list arrs as item> ${item} <#else> 集合是空的 </#list>
2.3.5.include
可以使用它在你的模板中插入另外一个 FreeMarker 模板文件 (由 path
参数指定)
<#include path> 或 <#include path options>
这里:
-
path
: 要包含文件的路径; -
options
: 一个或多个这样的选项:encoding=encoding
,parse=parse
-
encoding
: 算作是字符串的表达式 -
parse
: 算作是布尔值的表达式(为了向下兼容,也接受一部分字符串值) -
ignore_missing
: 算作是布尔值的表达式
-
<h1>Hello Freemarker</h1> <#include "/common/head.ftl">
SpringBoot整合Freemarker
2.1.配置
配置pom.xml,引入依赖:
application.ym添加:
freemarker:
# 设置模板后缀名
suffix: .ftl
# 设置文档类型
content-type: text/html
# 设置页面编码格式
charset: UTF-8
# 设置页面缓存
cache: false
# 设置ftl文件路径
template-loader-path: classpath:/templates
# 设置静态文件路径,js,css等
mvc:
static-path-pattern: /static/**
配置Springboot自带的页面:
建立一个templates专门存放ftl文件
index.ftl
common.ftl
<#assign ctx="${springMacroRequestContext.contextPath}">
<link rel="stylesheet" href="${ctx}/bootstrap-3.4.1-dist/css/bootstrap.css">
<script src="${ctx}/jquery-3.6.1.js"></script>
<script src="${ctx}/bootstrap-3.4.1-dist/js/bootstrap.js"></script>
这个文件定义了公共的资源
ctx代表/static/