1、快速入门
(1)模板 + 数据模型 = 输出
l FreeMarker基于设计者和程序员是具有不同专业技能的不同个体的观念
l 他们是分工劳动的:设计者专注于表示——创建HTML文件、图片、Web页面的其它可视化方面;程序员创建系统,生成设计页面要显示的数据
l 经常会遇到的问题是:在Web页面(或其它类型的文档)中显示的信息在设计页面时是无效的,是基于动态数据的
l 在这里,你可以在HTML(或其它要输出的文本)中加入一些特定指令,FreeMarker会在输出页面给最终用户时,用适当的数据替代这些代码
l 下面是一个例子:
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>Welcome ${user}!</h1>
<p>Our latest product:
<a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>
l 这个例子是在简单的HTML中加入了一些由${…}包围的特定代码,这些特定代码是FreeMarker的指令,而包含FreeMarker的指令的文件就称为模板(Template)
l 至于user、latestProduct.url和latestProduct.name来自于数据模型(data model)
l 数据模型由程序员编程来创建,向模板提供变化的信息,这些信息来自于数据库、文件,甚至于在程序中直接生成
l 模板设计者不关心数据从那儿来,只知道使用已经建立的数据模型
l 下面是一个可能的数据模型:
(root)
|
+- user = "Big Joe"
|
+- latestProduct
|
+- url = "products/greenmouse.html"
|
+- name = "green mouse"
l 数据模型类似于计算机的文件系统,latestProduct可以看作是目录,而user、url和name看作是文件,url和name文件位于latestProduct目录中(这只是一个比喻,实际并不存在)
l 当FreeMarker将上面的数据模型合并到模板中,就创建了下面的输出:
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>Welcome Big Joe!</h1>
<p>Our latest product:
<a href="products/greenmouse.html">green mouse</a>!
</body>
</html>
(2)数据模型
l 典型的数据模型是树型结构,可以任意复杂和深层次,如下面的例子:
(root)
|
+- animals
| |
| +- mouse
| | |
| | +- size = "small"
| | |
| | +- price = 50
| |
| +- elephant
| | |
| | +- size = "large"
| | |
| | +- price = 5000
| |
| +- python
| |
| +- size = "medium"
| |
| +- price = 4999
|
+- test = "It is a test"
|
+- whatnot
|
+- because = "don't know"
l 类似于目录的变量称为hashes,包含保存下级变量的唯一的查询名字
l 类似于文件的变量称为scalars,保存单值
l scalars保存的值有两种类型:字符串(用引号括起,可以是单引号或双引号)和数字(不要用引号将数字括起,这会作为字符串处理)
l 对scalars的访问从root开始,各部分用“.”分隔,如animals.mouse.price
l 另外一种变量是sequences,和hashes类似,只是不使用变量名字,而使用数字索引,如下面的例子:
(root)
|
+- animals
| |
| +- (1st)
| | |
| | +- name = "mouse"
| | |
| | +- size = "small"
| | |
| | +- price = 50
| |
| +- (2nd)
| | |
| | +- name = "elephant"
| | |
| | +- size = "large"
| | |
| | +- price = 5000
| |
| +- (3rd)
| |
| +- name = "python"
| |
| +- size = "medium"
| |
| +- price = 4999
|
+- whatnot
|
+- fruits
|
+- (1st) = "orange"
|
+- (2nd) = "banana"
l 这种对scalars的访问使用索引,如animals[0].name
(3)模板
l 在FreeMarker模板中可以包括下面三种特定部分:
Ø ${…}:称为interpolations,FreeMarker会在输出时用实际值进行替代
Ø FTL标记(FreeMarker模板语言标记):类似于HTML标记,为了与HTML标记区分,用#开始(有些以@开始,在后面叙述)
Ø 注释:包含在<#--和-->(而不是<!--和-->)之间
l 下面是一些使用指令的例子:
Ø if指令
<#if animals.python.price < animals.elephant.price>
Pythons are cheaper than elephants today.
<#else>
Pythons are not cheaper than elephants today.
</#if>
Ø list指令
<p>We have these animals:
<table border=1>
<tr><th>Name<th>Price
<#list animals as being>
<tr><td>${being.name}<td>${being.price} Euros
</#list>
</table>
输出为:
|
相关推荐
这个“freemarker 中文手册”可能是对Freemarker模板语言的详细解释和使用指南,方便中文用户理解和学习。 Freemarker的设计理念是分离业务逻辑和表现逻辑,让开发者专注于数据处理,而模板设计者则关注页面布局和...
赠送jar包:freemarker-2.3.31.jar; 赠送原API文档:freemarker-2.3.31-javadoc.jar; 赠送源代码:freemarker-2.3.31-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
在使用FreeMarker时,开发者需要将数据模型和模板文件传递给FreeMarker的引擎,然后它将根据提供的数据模型渲染出最终的文本输出。 本手册分为四个部分:模板开发指南、程序开发指南、XML处理指南、参考文档。在...
本说明将详细介绍如何安装Freemarker插件以及如何在项目中有效地利用它。 一、安装Freemarker插件 1. 对于Eclipse IDE用户,可以通过以下步骤安装: - 打开`Help` > `Install New Software` - 在`Work with`下拉...
Reference(FreeMarker 的参考文档,语言使用介绍) 中文翻译之所以选择 Programmer's Guide 是因为个人觉得该部分对如何实现 FreeMarker 进行了比较深入的阐述。有助于读者很好的了解其运作机制,以及去理解...
赠送jar包:freemarker-2.3.30.jar; 赠送原API文档:freemarker-2.3.30-javadoc.jar; 赠送源代码:freemarker-2.3.30-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
`readme(1).zip` 文件通常包含的是插件的使用说明或指南。解压并阅读此文件,可以获得关于如何配置和使用Freemarker编辑器的详细信息,例如: - 如何设置模板文件的关联:通常在“Window” -> “Preferences” -> ...
5. `说明.txt`: 这个文件可能包含了关于如何使用这些自定义标签的详细说明,包括如何在FreeMarker模板中引用它们以及它们的功能。 要扩展Struts2的FreeMarker标签库,你需要遵循以下步骤: 1. **创建模型类**: 定义...
标题 "Spring+Freemarker 使用163发HTML格式的邮件" 描述的是一个使用Spring框架结合Freemarker模板引擎发送HTML格式邮件的过程。在这个场景中,开发人员可能需要通过编程方式向用户发送包含丰富格式内容的邮件,...
2.3.23是FreeMarker的一个稳定版本,这个版本的官方中文文档提供了全面的指导和说明,帮助开发者更好地理解和使用这个模板语言。 在FreeMarker的核心概念中,它是一个基于数据驱动的模板语言。这意味着,开发者不...
4.6 在Servlet中使用FreeMarker:如何在Java Web应用中结合Servlet使用FreeMarker。 4.7 为FreeMarker配置安全策略:在多用户环境下如何配置FreeMarker以保证安全。 4.8 遗留的XML包装实现:对于处理XML的遗留实现...
Springboot项目中: 1. 使用Apache POI 3.9 自定义样式导出Excel文件...2. 使用freemarker动态生成word .doc文档(带图片Word以及复杂格式word) 详细说明见个人博客及 github: https://github.com/DuebassLei/excel-poi
为了使用Freemarker,开发者首先需要创建一个`Configuration`实例,并对其进行必要的配置。例如,设置模版的加载路径、数据模型的处理方式等。这一步骤确保了Freemarker能够正确地识别和处理模版。 ```java ...
以下是对给定的Freemarker不同版本jar包的详细说明: 1. **Freemarker 2.3.19**: - 这个版本可能包含了一些基本的功能,如模板语言的语法,变量、表达式和控制结构。 - 它可能已经支持了数据模型绑定,允许...
- **内建函数参考文档**:提供了FreeMarker内置函数的详尽列表和使用说明。 - **指令参考文档**:列举了FreeMarker的所有指令及其语法说明。 以上知识点覆盖了FreeMarker的主要方面,通过本教程的学习,读者不仅...
2. 数据模型:在使用Freemarker生成任何输出之前,需要准备一个数据模型,这个模型通常是Java对象或Map,包含了要在模板中使用的数据。 3. 模板解析:Freemarker引擎会解析模板文件,并结合数据模型生成最终的输出...
使用Freemarker模版生成不同的静态文件,该工具类使用简单,方法说明:包含所需的参数,可以进行二次封装
服务器端的Java代码负责处理业务逻辑,准备数据模型,然后使用Freemarker将这些数据模型渲染成Word文档。这个过程中可能需要使用到HTTP请求和响应,以及文件流处理,以便将生成的Word文档发送到客户端。 5. **模板...
指令参考部分则列举了FreeMarker中的各种指令,如条件语句指令、循环语句指令、宏指令等,每个指令都有详尽的使用示例和说明,这对于理解和使用这些指令提供了极大便利。 在使用FreeMarker进行开发时,遇到的常见...
同时,新建项目时,如果能看到Freemarker的模板选项,那么说明插件已经成功安装。 5. **使用Freemarker**:现在你可以在MyEclipse中创建和编辑Freemarker模板文件(`.ftl`扩展名)。IDE将提供语法高亮、代码提示、...