【freemarker模板引擎语法】Freemarker 是一个基于 Java 的模板引擎,广泛用于生成 HTML、XML、SQL、电子邮件等文本内容。它通过将数据模型与模板结合,动态生成最终的输出结果。以下是 Freemarker 常用语法的总结。
一、基础语法概述
| 语法类型 | 描述 | 示例 |
| 变量引用 | 使用 `${}` 表示变量 | `${name}` |
| 注释 | 使用 `<-- -->` 包裹注释内容 | `<-- 这是一个注释 -->` |
| 条件判断 | 使用 ` | ` |
| 循环语句 | 使用 `
| `
|
| 空值处理 | 使用 `??` 判断变量是否存在 | `${user.name!''}` |
| 模板包含 | 使用 ` | ` |
| 自定义指令 | 使用 ` | ` |
二、常用指令说明
| 指令 | 功能 | 示例 |
| ` | 条件判断 | ` |
| ` | 否则分支 | ` |
`
| 遍历集合 | `
|
| ` | 赋值 | ` |
| ` | 包含文件 | ` |
| ` | 定义宏 | ` |
| ` | 在宏中插入内容 | ` |
| ` | 结束循环 | ` |
| ` | 跳过当前循环 | ` |
三、表达式与运算符
| 运算符 | 说明 | 示例 |
| `+` | 加法 | `${a + b}` |
| `-` | 减法 | `${b - a}` |
| `` | 乘法 | `${a b}` |
| `/` | 除法 | `${a / b}` |
| `%` | 取模 | `${a % b}` |
| `==` | 等于 | `${a == b}` |
| `!=` | 不等于 | `${a != b}` |
| `>` | 大于 | `${a > b}` |
| `<` | 小于 | `${a < b}` |
| `>=` | 大于等于 | `${a >= b}` |
| `<=` | 小于等于 | `${a <= b}` |
四、常用内置对象
| 对象 | 说明 | 示例 |
| `request` | HTTP 请求对象 | `${request.getParameter("name")}` |
| `session` | HTTP 会话对象 | `${session.user}` |
| `application` | 应用上下文 | `${application.version}` |
| `params` | 请求参数 | `${params.id}` |
| `headers` | HTTP 请求头 | `${headers["User-Agent"]}` |
| `cookies` | Cookie 数据 | `${cookies["user"]}` |
| `locale` | 当前语言环境 | `${locale}` |
| `date` | 日期格式化 | `${date?string("yyyy-MM-dd")}` |
五、字符串处理
| 方法 | 说明 | 示例 |
| `?upper_case` | 转换为大写 | `${"hello"?upper_case}` |
| `?lower_case` | 转换为小写 | `${"HELLO"?lower_case}` |
| `?cap_first` | 首字母大写 | `${"hello"?cap_first}` |
| `?replace("old", "new")` | 替换字符串 | `${"hello"?replace("e", "E")}` |
| `?substring(start, end)` | 截取子串 | `${"hello"?substring(1,3)}` |
| `?length` | 获取长度 | `${"hello"?length}` |
六、数字格式化
| 格式 | 说明 | 示例 |
| `?c` | 货币格式 | `${1234.56?c}` |
| `?n` | 数字格式 | `${1234.56?n}` |
| `?date` | 日期格式 | `${now?date}` |
| `?time` | 时间格式 | `${now?time}` |
| `?datetime` | 日期时间格式 | `${now?datetime}` |
| `?string("format")` | 自定义格式 | `${1234.56?string("0.00")}` |
七、注意事项
- Freemarker 模板不支持 JavaScript 或 Java 代码直接嵌入。
- 所有逻辑应通过模板指令实现。
- 避免在模板中进行复杂的业务逻辑,保持模板简洁。
- 使用合理的缩进和注释提高可读性。
总结
Freemarker 提供了丰富的模板语法,适用于各种动态内容生成场景。掌握其基本语法和常用指令,可以显著提升开发效率并保证代码的可维护性。合理使用变量、条件、循环以及内置对象,能够构建出灵活且高效的模板系统。


