前言

FreeMarker 在老项目和邮件模板、报表模板场景里依然大量存在。FTL 语法细节多、容易忘,这篇按「输出 → 运算 → 流程控制 → 集合 → 指令 → 宏」的顺序整理成速查笔记。

基本原则:所有标签必须闭合,否则 FreeMarker 无法解析。注释格式 <#-- 注释内容 -->,不会输出。

一、字符输出

${emp.name?if_exists}            <#-- 变量存在输出,否则不输出 -->
${emp.name!}                     <#-- 同上 -->
${emp.name?default("xxx")}       <#-- 变量不存在,取默认值xxx -->
${emp.name!"xxx"}                <#-- 同上 -->

常用内建函数:

……

阅读全文