FreeMarker模板语言详解:语法与指令

需积分: 50 1 下载量 196 浏览量 更新于2024-09-10 收藏 32KB DOCX 举报
FreeMarker是一个强大的模板引擎,常用于Java应用中生成动态HTML或其他格式的文档。它与HTML紧密集成,但不包含任何逻辑或控制结构,这些都由后端应用程序处理。FreeMarker模板文件由四个基本元素构成:文本、注释、插值和FTL指令。 1. **文本**: 文本是模板文件中的大部分内容,它们会被原样输出到最终生成的文档中。例如,HTML标签、样式、脚本等都是文本,它们在渲染后会出现在最终用户看到的页面上。 2. **注释**: FreeMarker使用`<#-- ... -->`格式进行注释。这些注释不会被包含在最终输出中,主要用于开发者在模板中添加说明或者临时屏蔽某些内容。 3. **插值**: 插值是FreeMarker中将数据模型中的值插入到模板中的方式。有两种基本形式: - `${expr}`:通用插值,用于输出任何类型的表达式结果。如果表达式结果是字符串,它将被直接输出;如果是其他类型,如数字或日期,FreeMarker会尝试将其转换为字符串。 - `#{expr;format}`:数字格式化插值,允许对数字表达式进行格式化。`format`参数用于指定输出格式,比如货币、百分比等。 4. **FTL指令**: FTL(FreeMarker Template Language)指令类似于HTML标签,但带有前缀`#`,用于控制模板的行为。FreeMarker提供了多种内置指令,例如: - `<#if>`和`<#else>`:条件判断,根据表达式的真假决定是否执行某段代码。 - `<#foreach>`:循环遍历集合,如列表或数组。 - `<#assign>`:定义变量。 - `<#function>`:定义函数。 - `<#include>`:引入其他模板文件。 FTL指令也有空标签形式,如`<#macro>`和`<#import>`,以及使用`@`前缀的用户自定义指令。 例如,以下是一个简单的FreeMarker模板示例: ```html <html> <head> <title>Welcome!</title> </head> <body> <#-- 注释部分 --> <h1>Welcome ${user}!</h1> <p>We have these animals:</p> <ul> <#list animals as being> <li>${being.name} for ${being.price} Euros</li> </#list> </ul> </body> </html> ``` 在这个例子中,`<#list>`是一个FTL指令,用于遍历`animals`列表,并在每个`being`上执行内部的代码。`${user}`和`${being.name}`、`${being.price}`是插值,它们会被替换为相应的数据模型值。 理解并熟练掌握FreeMarker的这些基本语法,对于开发基于FreeMarker的动态网页和文档生成系统至关重要。FreeMarker的灵活性和简洁性使得它成为Java Web开发中常用的模板引擎之一。