FreeMarker模板语言详解:语法与插值规则
需积分: 9 178 浏览量
更新于2024-08-01
收藏 321KB PDF 举报
"FreeMarker语法.pdf 是一份关于FreeMarker模板语言的详细指南,它主要介绍了FreeMarker模板的基本结构和常用语法。FreeMarker是一种强大的、轻量级的模板引擎,常用于Java Web应用,如与Struts2框架集成,用于动态生成HTML或其他类型的文档。
1. **FreeMarker模板组成部分**
- **文本**:模板文件中的普通文本会被原样输出到最终生成的文档中。
- **注释**:以`<#---->`形式的注释不会被显示在生成的文档中。
- **插值**: `${}` 或 `#{}` 用于插入数据模型中的变量或表达式的值,它们会被替换为对应的值并输出。
- **FTL指令**:FreeMarker的特定指令,以`#`开头,用于控制模板的逻辑,比如条件判断、循环等,它们不会出现在最终的输出中。
2. **FTL指令规则**
- **开始标签**:`<#directivenameparameter>`,定义指令的开始。
- **结束标签**:`</#directivename>`,与开始标签配对,表示指令结束。
- **空标签**:`<#directivenameparameter/>`,用于不需要结束标签的指令。
- 用户自定义指令使用`@`而非`#`,以区分系统内建指令。
- FTL标签的嵌套必须正确,遵循XML标签的规则,错误的嵌套会导致解析错误。
- 空白字符在FTL标签中通常被忽略,且不应存在于 `<`, `/`, 和指令名称之间。
3. **插值规则**
- **通用插值**: `${expr}`,根据表达式`expr`的结果输出相应值。
- **字符串插值**:表达式为字符串时,直接输出。
- **数字插值**:表达式为数字时,按照预设的格式(通过`#setting`指令设置)转化为文本输出。
- 默认格式:`number_format`,可通过`?string`进行格式化。
- 数字格式化:`#{expr;format}`,如货币、百分比等。
- **日期插值**:表达式为日期时,按照预设格式转换并输出。
- **布尔值插值**:表达式为布尔值时,可以转化为字符串`"true"`或`"false"`。
4. **其他功能**
- **变量赋值**:`<#assign answer=42/>`,可以定义变量。
- **条件语句**:`<#if condition>`、`<#else>`、`</#if>` 等。
- **循环控制**:`<#list list as item>`、`<#foreach item in list>` 等。
- **函数调用**:FreeMarker提供了许多内置函数,如字符串处理、日期格式化等。
FreeMarker的灵活性和强大功能使其成为Java Web开发中的重要工具,通过模板和数据模型的结合,可以方便地生成动态内容,比如电子邮件、报表、HTML页面等。学习和掌握FreeMarker的语法,能有效提高开发效率,实现更灵活的页面渲染。
2012-03-29 上传
2018-09-20 上传
2008-09-22 上传
2011-07-18 上传
2010-11-30 上传
2008-11-13 上传
2010-12-27 上传
2021-10-04 上传
shangxpor
- 粉丝: 1
- 资源: 5
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫