Freemarker 基本语法

本贴最后更新于 1578 天前,其中的信息可能已经物是人非

一、概念

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! '小强'}
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 460 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...