| « | November 2025 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | | | |
| 公告 |
| 本博客在此声明所有文章均为转摘,只做资料收集使用。并无其他商业用途。 |
| Blog信息 |
|
blog名称: 日志总数:210 评论数量:205 留言数量:-19 访问次数:927399 建立时间:2007年5月10日 |

| |
|
[界面和模板语言]FreeMarker设计指南(3) 文章收藏, 网上资源, 软件技术, 电脑与网络
李小白 发表于 2007/10/31 19:29:02 |
|
3、模板
(1)整体结构
l 模板使用FTL(FreeMarker模板语言)编写,是下面各部分的一个组合:
Ø 文本:直接输出
Ø Interpolation:由${和},或#{和}来限定,计算值替代输出
Ø FTL标记:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出
Ø 注释:由<#--和-->限定,不会输出
l 下面是以一个具体模板例子:
<html>[BR]<head>[BR] <title>Welcome!</title>[BR]</head>[BR]<body>[BR] <#-- Greet the user with his/her name -->[BR] <h1>Welcome ${user}!</h1>[BR] <p>We have these animals:[BR] <ul>[BR] <#list animals as being>[BR] <li>${being.name} for ${being.price} Euros[BR] </#list>[BR] </ul>[BR]</body>[BR]</html>
l [BR]是用于换行的特殊字符序列
l 注意事项:
Ø FTL区分大小写,所以list是正确的FTL指令,而List不是;${name}和${NAME}是不同的
Ø Interpolation只能在文本中使用
Ø FTL标记不能位于另一个FTL标记内部,例如:
<#if <#include 'foo'>='bar'>...</if>
Ø 注释可以位于FTL标记和Interpolation内部,如下面的例子:
<h1>Welcome ${user <#-- The name of user -->}!</h1>[BR]<p>We have these animals:[BR]<ul>[BR]<#list <#-- some comment... --> animals as <#-- again... --> being>[BR]...
Ø 多余的空白字符会在模板输出时移除
(2)指令
l 在FreeMarker中,使用FTL标记引用指令
l 有三种FTL标记,这和HTML标记是类似的:
Ø 开始标记:<#directivename parameters>
Ø 结束标记:</#directivename>
Ø 空内容指令标记:<#directivename parameters/>
l 有两种类型的指令:预定义指令和用户定义指令
l 用户定义指令要使用@替换#,如<@mydirective>...</@mydirective>(会在后面讲述)
l FTL标记不能够交叉,而应该正确的嵌套,如下面的代码是错误的:
<ul><#list animals as being> <li>${being.name} for ${being.price} Euros <#if use = "Big Joe"> (except for you)</#list></#if> <#-- WRONG! --></ul>
l 如果使用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息
l FreeMarker会忽略FTL标记中的空白字符,如下面的例子:
<#list[BR] animals as[BR] being[BR]>[BR]${being.name} for ${being.price} Euros[BR]</#list >
l 但是,<、</和指令之间不允许有空白字符
(3)表达式
l 直接指定值
Ø 字符串
n 使用单引号或双引号限定
n 如果包含特殊字符需要转义,如下面的例子:
${"It's \"quoted\" andthis is a backslash: \\"} ${'It\' |
|
|