FreeMarker 指南(一) -【纯属整理】
来源:互联网 发布:网络教学信息技术应用 编辑:程序博客网 时间:2024/05/20 02:23
学习整理,如有侵权,请Email 告之
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>输出为:
<p>We have these animals:<table border=1> <tr><th>Name<th>Price <tr><td>mouse<td>50 Euros <tr><td>elephant<td>5000 Euros <tr><td>python<td>4999 Euros</table>Ø include指令
<html><head> <title>Test page</title></head><body> <h1>Test page</h1> <p>Blah blah...<#include "/copyright_footer.html"></body></html>Ø 一起使用指令
<p>We have these animals:<table border=1> <tr><th>Name<th>Price <#list animals as being> <tr> <td> <#if being.size = "large"><b></#if> ${being.name} <#if being.size = "large"></b></#if> <td>${being.price} Euros </#list></table>
- FreeMarker 指南(一) -【纯属整理】
- FreeMarker 指南(二) -【纯属整理】
- FreeMarker概述 - 纯属整理
- FreeMarker设计指南(完整整理)
- FreeMarker设计指南(完整整理)
- FreeMarker设计指南(完整整理)
- FreeMarker设计指南(一)
- FreeMarker指南
- FreeMarker(一)
- FreeMarker设计指南(1)
- FreeMarker设计指南(2)
- FreeMarker设计指南(3)
- FreeMarker设计指南(1)
- FreeMarker设计指南(2)
- FreeMarker设计指南(3)
- FreeMarker设计指南(4)
- FreeMarker设计指南
- FreeMarker设计指南(1)
- 关于tomcat下的work目录
- 【读书笔记-重构与模式】设计模式之简单工厂模式、工厂模式、抽象工厂
- Vector、ArrayList和List的异同[转载]
- Android之文件存储方式
- Linux线程同步之互斥锁
- FreeMarker 指南(一) -【纯属整理】
- JAVA中使用FTPClient实现文件上传下载
- unity3d 在gui上绘制序列帧
- 设计模式C++实现(5)——原型模式、模板方法模式
- 设计模式C++实现(6)——建造者模式
- PHP+Ajax实现表单验证
- SeeTest_See test 解决方法
- valgrind 的使用简介
- windows8 开发教程 教你制作 多点触控Helper可将任意容器内任意对象进行多点缩放
原创粉丝点击热门IT博客热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 储备里程 电动车里程 里程交易 建设里程 里程数 租车限里程 起码里程 续航里程什么意思 里程是什么意思 里程什么意思 电动车续航里程排名 里程表怎么看 k1263火车里程表 汽车调里程简单方法 里程表怎么调 三年级里程表题及答案 高速公路里程 中国铁路总里程 怎么把里程表公里数调小 中国高铁总里程 中国高铁里程 1里程等于多少公里 汽车里程数可以改吗 里程表传感器 汽车里程表怎么调 电动车里程增加器 摩托车里程表 航班 里程 查询 飞行里程有什么用 多少里程换轮胎 超长里程电动自行车 里程有什么用 飞机里程兑换 飞机里程数有什么用 航空里程怎么用 荣威e50续航里程 锂电池续航里程 中洲里程售楼处 tesla 续航里程 航空公司里程积分 租车 不限里程