Freemarker基础教程:标记、插值与注意事项

需积分: 10 12 下载量 195 浏览量 更新于2024-07-28 收藏 147KB DOC 举报
Freemarker是一种强大的模板引擎,它允许开发人员将数据模型嵌入到标记语言中,以动态生成输出。本篇文章概述了Freemarker的基础知识,包括其关键特性和使用方法。 1. **注释**: Freemarker的注释使用`<#-- 和 -->`这对符号,而非HTML风格的`<!-- 和 -->`。这是区分Freemarker模板与其他HTML的一个重要特征。 2. **FTL标记** (FreeMarker Template Language Markers): FTL标记是模板的关键部分,它们以`#`或`@`开头,用于控制程序逻辑。例如,条件语句`<#if abc = "abc">abc</#if>`和`[#if abc = "abc"]abc[/#if]`分别展示了尖括号和中括号标记的选择。但请注意,两种标记方式不能混用在同一模板中。 3. **表达式插值** (${...}): `${...}`是插值表达式,Freemarker会在此处替换实际数据值。例如,`${user.name}`会在输出时显示用户的名字。 4. **基本注意事项**: - FTL对大小写敏感,例如`list`和`List`是不同的指令。 - FTL结构要求正确嵌套,避免交错,如示例中的错误代码 `<ul>...</li>`。 - 使用存在性检查`?exists`判断变量是否存在,如`teacher.sex?exists && teacher.sex > 50`,若不存在或值小于等于50,则不输出相应的信息。 - 对于可能为null的变量,可以使用默认值,如`${user?default("123")}`或`${user!"123"}`。 - 字符串格式化需要注意处理空值,例如`${bean.beginDate?string('yyyy-MM-dd')}`可能会抛出异常,需确保处理空值情况。 5. **指令格式**: FTL标记支持两种常见的语法格式: - **无标签**形式:如`<#if condition>...</#if>`,在条件满足时执行内容。 - **带标签**形式:如`[#if condition]>...</#if>`,提供更清晰的视觉层次。 理解并掌握这些基础概念有助于您在实际项目中高效地使用Freemarker生成动态内容。在编写模板时,遵循规则、合理使用插值和条件判断,以及处理好空值和错误处理,能提高代码质量和可维护性。