一、概念
Freemarker是一款模板引擎,並用來輸出文本,網頁或配置文件等。
二、語法
2.1 注釋
<!-- 在頁面可以看的到 -->
<#-- 在頁面看不到 -->
2.2 數據類型
布爾類型boolean
不能直接輸出,需要轉換成字符串,用c轉換。
后端返回msg=true
# 錯誤
${msg}
# 正確
方法一: ${msg?c}
方法二: ${msg?string}
方法三: ${msg?string('是字符串','不是字符串')}
輸出
true
true
是字符串
日期類型date
不能直接輸出,需要轉換成字符串,用c轉換。
數值類型
等於java中的int,float,double等類型。
字符串類型
等於java中的字符串。
空值處理
不存在會報錯,null也會報錯,
解決:傳空字符串"",加感嘆號{msg!}
sequence類型
等於java中的數組list,set類型。
# 遍歷集合
<#list 序列名 as 元素名>
${元素名}
</#list>
hash類型
等於java的Map類型。
# key遍歷,獲取key和key對應的value
<#list hash?key as key>
${key}---${hash[key]}
</#list>
# value遍歷,直接獲取value
<#list hash?values as value>
{value}
</#list>
2.3 常用指令
自定義變量assign
# 定義單個
<#assign str = "hello">
#{str}
</#assign>
# 定義多個,根據逗號分割成字符串
<#assign name = "qinag" names=["強1","強2","強3"]>
#{str}
#{names?join(',')}
</#assign>
條件控制語句if...elseif...else
# 格式
<#if 條件1>
...
<#ifelse 條件2>
...
<#ifelse 條件3>
...
<#else>
...
<#/if>
# 條件不為空時才遍歷
<#if 序列名??>
<#list 序列名 as 元素名>
${元素名}
</#list>
</#if>
<#list 序列名 as 元素名>
${元素名}
<#else>
沒有條件時執行這部分語句
</#list>
三、自定義指令
可以使用macro定義,可以傳參,可以重復使用。
3.1 自定義指令
<#macro phone>
18912354231
</#macro>
使用自定義指令
<@phone></@phone>
3.2 自定義指令傳參
<#macro queryByName name passwd>
根據用戶名查詢 - ${name}
密碼是 - ${passwd}
</#macro>
使用自定義傳參指令
<@queryByName name='admin' passwd='123456'></@queryByName>
3.3 nested占位指令
<#macro test>
這是一段文本
<#nested>
</#macro>
使用nested占位指令
<@test>xxxxxx</@test>
則優先顯示“這是一段文本”
四、導入指令
4.1 import
import指令可以導入一個庫,它創建一個新的命名空間,然后在那個命名空間中執行給定路徑的模板,可以使用引入空間的指令。
commons.ftl
<#maro cfb>
QQ: 875667601
</#maro>
test.ftl
<#-- 導入命名空間 -->
<#import "commons.ftl" as common>
<#-- 使用導入的命名空間 -->
<@common.cfb></@common.cfb>
4.2 include
include包含指令。
可以使用include指令在模板中插入另外一個模板,被包含的模板輸出在include的位置上,像是復制進去了一樣。
<#include "test.ftl">
<#include "test.txt">
<#include "test.html">
五、運算符
5.1 算數運算符
# 加 減 乘 除 取模
+ - * / %
5.2 邏輯運算符
# 與 或 非
&& || !
5.3 比較運算符
# 大於 小於 等於 大於等於 小於等於 不等於
>(gt)
<(lt)
=
>=(gte)
<=(lte)
!=
5.4 空值運算符
# 判斷是否為空,返回布爾類型
??
${(name??)?string}
# 如果為空,設置默認值
@
${name! '小強'}
作者(Author):小強崽
來源(Source):https://www.wuduoqiang.com/archives/Freemarker基本語法
協議(License):署名-非商業性使用-相同方式共享 4.0 國際 (CC BY-NC-SA 4.0)
版權(Copyright):商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 For commercial use, please contact the author for authorization. For non-commercial use, please indicate the source.