FreeMarker模板语言详解:语法与插值规则

需积分: 9 5 下载量 116 浏览量 更新于2024-07-31 收藏 89KB DOC 举报
"FreeMarker是一种模板引擎,常用于动态生成HTML或其他类型的文本文件。它将数据模型与HTML模板结合,使开发者能够轻松地将后台数据渲染到前端界面。FreeMarker的模板文件主要由四部分组成:文本、注释、插值和FTL指令。本文将详细介绍这些基本语法元素以及它们在实际应用中的用法。 1. **文本**:模板文件中的大部分内容都是纯文本,这部分内容会被原样输出到最终生成的文档中。 2. **注释**:FreeMarker支持使用`<#-- ... -->`进行注释,这部分内容在模板处理过程中不会被输出到最终文件。 3. **插值**:插值是FreeMarker中的关键特性,它允许将数据模型中的变量或表达式替换为对应的值。插值有两种形式: `${...}` 和 `#{...}`。前者通常用于输出字符串、数字、日期等,后者则常用于数字格式化。例如,`${answer}` 将输出变量`answer`的值,而`#{answer}`可以用于按照默认的数字格式输出。 4. **FTL指令**:FreeMarker提供了许多内置指令,它们以`#`开头,类似于HTML标签。这些指令可以用来控制模板的行为,比如控制流程、引入外部数据、定义变量等。FTL指令还有空标签形式,如`<#directive name parameter/>`。此外,如果指令是用户自定义的,`#`可替换为`@`。 - 开始标签:`<#directivename parameter>` - 结束标签:`</#directivename>` - 空标签:`<#directivename parameter/>` FTL指令的使用需遵循正确的嵌套规则,避免交叉使用,并且标签间的空白字符通常会被忽略。如果使用了不存在的指令,FreeMarker会抛出错误。 关于插值的更深入讲解: - **通用插值** `${expr}`:当表达式`expr`的结果是字符串、数字、日期等类型时,FreeMarker会相应地处理并输出。例如,`${answer?string}`将`answer`的数值转换为字符串输出。 - **数字格式化插值** `#{expr}` 或 `#{expr;format}`:FreeMarker提供了多种内置的数字格式化方式,如货币、数字、百分比等。例如: - `${answer?string.number}` 输出标准数字格式。 - `${answer?string.currency}` 输出货币格式。 - `${answer?string.percent}` 输出百分比格式。 - 当插值结果为日期值时,FreeMarker会基于默认日期格式(通过`#setting`指令设置)将其转换为文本输出。 FreeMarker的这些基本语法使得开发者能够灵活地构造模板,将动态数据无缝集成到静态的HTML或其他文本文件中,从而实现前后端的解耦。理解和熟练运用这些概念是掌握FreeMarker的关键,也是构建高效Web应用的重要基础。"