FreeMarker模板引擎详解及语法介绍

需积分: 0 2 下载量 200 浏览量 更新于2024-07-26 收藏 27KB DOCX 举报
FreeMarker是一个Java模板引擎,独立于Web容器,可用于生成文本输出,包括HTML、XML、JSP和Java代码等。它基于模板和数据模型来工作。 FreeMarker模板结构主要包括四部分: 1. 文本:这部分内容将直接输出到最终生成的文档中。 2. 注释:以`<#---->`形式表示,不会出现在最终输出中。 3. 插值:通过`${}`或`#{}`将数据模型中的变量替换并输出。 4. FTL指令:FreeMarker特有的指令,以`#`开头,类似于HTML标签,但不会直接输出。 以下是一个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> ``` FreeMarker的FTL指令规则: 1. 开始标签:`<#directivename parameter>` 2. 结束标签:`</#directivename>` 3. 空标签:`<#directivename parameter/>` 使用时需注意,用户自定义指令应使用`@`代替`#`。指令的使用需要正确嵌套,错误的指令会导致FreeMarker抛出错误。空白字符在FTL标签内会被忽略,标签间的符号如 `<`, `/`, 和指令不应有空格。 FreeMarker的插值规则: 1. 通用插值: `${expr}`,根据表达式`expr`的结果输出字符串。 2. 数字格式化插值: `#{expr}` 或 `#{expr;format}`。 - 通用插值根据结果类型决定输出方式: - 字符串值:直接输出表达式结果。 - 数字:默认以字符串形式输出,可以进行格式化控制。 - 数字格式化插值允许对数字进行格式化,例如保留小数位数、千分位分隔等。 FreeMarker的插值表达式可以引用数据模型中的对象属性,如`${user.name}`获取用户对象的name属性。此外,它还支持各种内置函数和逻辑操作,如条件语句(`<#if>`、`<#else>`)、循环(`<#list>`)等,使得模板更加灵活。 FreeMarker的这种设计模式让开发者能够将业务逻辑和视图展示分离,提高代码的可维护性和可扩展性,是MVC架构中常用的表现层技术之一。
2024-11-15 上传