FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:<#-- ... -->格式部分,不会输出 3,插值:即${...}或#{...}格式的部分,将使用数据模型中的部分替代输出 4,FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出 ### Freemarker教程详解 #### 一、Freemarker概述与组成部分 **Freemarker**是一种用于生成动态HTML页面的模板引擎。它通过定义模板文件来处理数据模型,并将其转化为最终的输出文档。Freemarker的模板文件并不比HTML页面复杂多少,主要由四个基本组成部分构成: 1. **文本**: 直接输出的部分。这部分内容不会被Freemarker解释,而是直接输出到最终生成的文档中。 2. **注释**: `<#-- ... -->` 格式部分,不会输出。注释内容仅供开发者参考,不会出现在最终的输出文档中。 3. **插值**: 即 `${...}` 或 `#{...}` 格式的部分,将使用数据模型中的内容替代输出。插值是Freemarker中最常用的功能之一,用于显示动态数据。 4. **FTL指令**: Freemarker指令,与HTML标记类似,名字前加`#`予以区分,不会输出。这些指令控制着模板的行为,如循环、条件判断等。 #### 二、示例模板分析 下面通过一个简单的Freemarker模板例子来详细了解上述四个部分的应用: ```html <html> <head> <title>Welcome!</title> </head> <body> <#-- 注释部分 --> <#-- 下面使用插值 --> <h1>Welcome ${user}!</h1> <p>We have these animals:</p> <ul> <#-- 使用FTL指令 --> <#list animals as animal> <li>${animal.name} for ${animal.price} Euros</li> </#list> </ul> </body> </html> ``` - **文本**: `<html>`、`<head>`、`<title>`等HTML标签属于文本部分,它们将直接作为输出的一部分。 - **注释**: `<#-- 注释部分 -->` 属于注释部分,只供开发人员查看,不参与输出。 - **插值**: `${user}` 和 `${animal.name}`、`${animal.price}` 属于插值部分,表示使用数据模型中的变量值来替换输出。 - **FTL指令**: `<#list animals as animal>` 是一个典型的FTL指令,用于遍历`animals`列表,并为每个元素执行一次`<li>`标签内的代码。 #### 三、FTL指令规则 在Freemarker中,使用FTL标签来使用指令,主要有三种类型的FTL标签: 1. **开始标签**: `<#directiveName parameter>` 2. **结束标签**: `</#directiveName>` 3. **空标签**: `<#directiveName parameter/>` - 实际上,在使用标签时前面的符号`#`也可能会变成`@`,如果该指令是一个用户自定义指令而不是系统内置指令时,应将`#`符号改成`@`符号。 - 在使用FTL标签时,应该有正确的嵌套,而不是交叉使用,这一点类似于XML标签的用法。 - 如果全用不存在的指令,Freemarker不会使用模板输出,而是产生一个错误消息。 - Freemarker会忽略FTL标签中的空白字符。值得注意的是`<`, `/` 和指令之间不允许有空白字符。 #### 四、插值规则 Freemarker的插值有两种类型:通用插值 `${expr}` 和数字格式化插值 `#{expr;format}`。 1. **通用插值**: - 插值结果为字符串值: 直接输出表达式结果。 - 插值结果为数字值: 根据默认格式(由`#setting`指令设置)将表达式结果转换成文本输出。可以使用内建的字符串函数格式化单个插值。 - 插值结果为日期值: 根据默认格式(由`#setting`指令设置)将表达式结果转换成文本输出。同样可以使用内建的字符串函数格式化单个插值。 - 插值结果为布尔值: 根据默认格式(由`#setting`指令设置)将表达式结果转换成文本输出。可以使用内建的字符串函数格式化单个插值。 2. **数字格式化插值**: - 数字格式化插值可采用`#{expr;format}`形式来格式化数字,其中`format`可以是: - `mX`: 小数部分最小X位 - `MX`: 小数部分最大X位 例如: ```html <#assign x = 2.582/> <#assign y = 4/> #{x;M2}<#-- 输出2.58 --> #{y;M2}<#-- 输出4 --> #{x;m2}<#-- 输出2.6 --> #{y;m2}<#-- 输出4.0 --> #{x;m1M2}<#-- 输出2.58 --> #{y;m1M2}<#-- 输出4.0 --> ``` #### 五、总结 Freemarker作为一种强大的模板引擎,其核心功能在于通过定义模板文件来处理数据模型,并将其转化为最终的输出文档。通过理解Freemarker的组成部分(文本、注释、插值、FTL指令)及其规则(FTL指令规则、插值规则),我们可以更灵活地应用Freemarker来生成动态内容。无论是简单的HTML页面还是复杂的业务报表,Freemarker都能提供强大的支持。
剩余30页未读,继续阅读
- 粉丝: 2
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于FPGA的实验平台AlteraQuatarsII的16位单周期CPU设计.html
- 动态圣诞树html页面完整代码.docx
- 大麦抢票神器源码辅助工具+详尽教程
- V8版本京东淘宝自动抢单系统源码利息宝会员开通全开-附视频教程
- 安全初学者知识速查,可以帮助了解IT小白了解一些安全常识
- 使用WSL批量压缩PDF步骤对应Shell脚本
- 基于微信小程序的校园兼职微信小程序.zip
- 创建emp的数据库sql
- GNSS 数据质量检核软件anubis
- SecureCRT:终端仿真工具,支持多协议,安全高效,提升工作效率
- 彩虹聚合DNS管理系统源码V2.0.1,SSL证书自动申请与部署
- html+css+js网页设计 美食 全屏幕轮播美食1个页面
- 2000-2023年上市公司数字经济产业分组数据(含原始数据+处理代码+结果).zip
- win32汇编环境下,对话框中生成listview列表控件程序
- 温情DS打赏源码,打赏源码多模板
- 2024年个人工作总结(通用版)