Freemarker基本語法


一、概念

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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM