领先的 与 技术推广者
《Velocity 模板使用指南》中文版
源文见 http://velocity.apache.org
声明转载请保留此页声明
此文档为蓝杰实训学员拓展实训之用
蓝杰实训不对译文中某些说法可能会对您的系统或开发造成损害负责
如对您有所帮助,我们不胜荣幸!
本文属 中的 中文系列,本系包含如下文章:
《 开发指南中文版》
《 模板使用指南中文版》
《 应用开发指南中文版》
《!" 语法参考指南中文版》!"#$
《%&' 中文系列之起步篇》
更多资料请访问 http://www.netjava.cn/
译者: javaFound
($)*++
,,,
1
领先的 与 技术推广者
目 录
1.本文目地和使用对象......................................................................................................................................3
2.什么是 Velocity?..............................................................................................................................................3
3.Velocity 能为你做什么?..................................................................................................................................3
1.一个 Mud Store Example........................................................................................................................3
4.Velocity Template Language (VTL): 介绍......................................................................................................4
5.输出第一个 VTL 页面!...................................................................................................................................5
6.Comments(注释)..............................................................................................................................................5
7.References(引用).............................................................................................................................................5
1.Variables(变量)........................................................................................................................................6
2.Properties(属性).......................................................................................................................................6
3.Methods(命令)....................................................................................................................................6
4.属性引用中的属性查找规则.................................................................................................................7
8.Formal Reference Notation(正规引用格式注意事项)...................................................................................7
9.Quiet Reference Notation(静态引用输出).....................................................................................................7
10.Getting literal( 语义问题).............................................................................................................................8
1.Currency(货币标志)................................................................................................................................8
2.Escaping Valid VTL References(封装有效的引用)...............................................................................8
11.Case Substitution(可选的格式).....................................................................................................................9
12.Directives(指令符号)..................................................................................................................................10
1.#set 指令................................................................................................................................................10
2.Literals (语义解析)................................................................................................................................12
3.Conditionals(条件判断)........................................................................................................................13
4.Loops(循环)...........................................................................................................................................15
3.Include(引入).........................................................................................................................................16
6.Parse(解析模板)....................................................................................................................................16
7.Stop........................................................................................................................................................16
8.Velocimacros(宏调用)...........................................................................................................................17
13.注掉 VTL Directives...................................................................................................................................19
14.VTL: 一般使用的格式................................................................................................................................20
15.Other Features and Miscellany(其它特性和细节).....................................................................................21
1.数学计算................................................................................................................................................21
2.Range Operator......................................................................................................................................21
3.Advanced Issues: Escaping and !..........................................................................................................23
4.Velocimacro Miscellany(关于宏的一些问题).....................................................................................23
5.String Concatenation(连结字符串).......................................................................................................25
16.Feedback......................................................................................................................................................25
,,,
2
领先的 与 技术推广者
-本文目地和使用对象
本文主要介绍如何在模板中使用 功能强大的模板语言 !"!+"**
用法有一个全面的认识,并掌握如何在模板中有效使用。同时,本文提供较多的例子帮您来学习它。
感谢您选择 帮助您实现纯正的 (. 系统构架。
2.什么是 Velocity?
是一个基于 的模板引擎+*它可以让视图的设计者在 , 页面中
引用 代码中定义的数据对象和命令。从而使 * 和 开发者依照 (. 思想
(/,/.开发系统0这意味着 * 只须将精力注用于良好表现力的视图外
观设计,而 程序员则只要关心着如何写出高效简洁的 对象以实现业务逻辑///// 会将
他们组装到一起相比传统的 、121 等脚本语言, 彻底的将避免了在视图设计中出现的
代码0从而保证了 , 的长期可维护性
一定要理解, 是一个 +* 的意思,它还可以从模板中生成 34" 语句或其它脚本
提供给 ,*它也可以独立使用///做为一个工具类用来生成源代码、报表、邮件
模板等///在有需要重复的视图情况下,你应想到使用 5 站点提供的另外一个框架
!可以和 有效结合以实现 (.+
3.Velocity 能为你做什么?
1.一个 Mud Store Example
假设你是一个 **在为一个在线商店设计页面我们称这个项目为 6!5'(
36业务发展还不错,客户会订购不同类型的 (0每个客户都会用自己的帐号密码 *0查看选择
他们订购的 (0查看订单,但还有些忠诚用户会购卖不太流行的 (////这些不需要出现在页面中显
眼的地方。当然,!5'(3 必须把每个客户资料及订购信息记录到 % 中,现在的问题
是,如何让某个客户 * 后就看到他感兴趣的信息?
使用 7我们为每个客户定制一个页面!这听起来工作量巨大,让我们试试:
使用 的 !"如下来设计 ,*
82!("9
8%':9
;;指定用户名字
欢迎你: <++7
89
;;;输出用户喜好的 (
;$5<+<+'3
,,,
3
领先的 与 技术推广者
;$<+515<+
89
89
<=***1+<+
8>9
8>9
;
;
8>9
使用 !" 设计页面就是这么简单!文档《!" 参考中文版》中有更全面的 !" 语言介绍,掌握这些,
你将会全面体会到 的威力
4.Velocity Template Language (VTL): 介绍
!5!+"**!"目标是提供一个简洁,易学的方法将动态内容展现到 ,
* 上,* 设计者可以没有任何编程经验就可以在一天内学会使用它增强你的站点的展示
力!
!" 使用引用references这种方式将 +动态内容,一般指 代码生成的数据对
象加入到你的 ,0 中的变量只是 $ 中的一种 是用来描述
从引入到视图模板中的 数据对象。当然, 代码也可以从模板的 !" 中获取数据以下是一个写
在 2!(" 中的 !" 变量
;<?66
!" 声明+0所以的 !"+ 都是以#开头,且包含一个指示符(这里是 set)0当客
户访问你的页面时05!+*@* 将搜索页面中的所有 #符号0如果确定这是一个
!" 声明时就按一定规则处理动态内容0符号;仅仅只是表明这可能是一个 !" 声明
符号#所跟的 set 我们用“指示符”这一名词来称呼它随后介绍更多的指示符0set指示符使用一个表达
式A包含在一对括号里B将一个值 value这里是 付给变量 0(变量名在左边,
值在右边,用?组合起来)
在以上的例子中0变量是 a0而符号“<C表明它是一个变量0 中所有变量以符号”<C开头,所付的值
要用双引号括起, 这个值中还可以再添加 变量,如62<+6,输出的将是 + 变量
所付的值。
这是理解 !" 基础的规则
以<开头的表示“引用”意思是取得一些东东而”指示”则以;开头来表示,有点“做些什么动
作”的意思
如上便0#set用来指定值给一个变量名$a0以“<C标示的变量名 的值就是66
,,,
4
领先的 与 技术推广者
5.输出第一个 !" 页面7
有你的 2!(" 文档的任何地方,都可以引用一个变量名来输出值0如下例0先给变量名 foo赋值为
0然后将它输出到页面中
85+9
89
;<$?66
2<$7
8>9
85+9
在这个页面上,你看到的将是 6276
为了让查板中的 !" 指令更易读0我们强烈建议你每行一条 !" 指令0当然这不是必须的关于 set
的更多功能我们随后再讨论
6.Comments(注释
.++ 可以让你在模板中包含对 !" 或其它问题的说明描述以便与阅读和理解///但它并不会在最
终输出的 ,* 中看到如下示例是 !" 中的一行注释
;;!5*++
单行注释是以##开头的一行文字如要写下多行注释,就要像下面那样,将它们放入#*和*#间
!5A55+/++
'
;
!5*+/++',D
5A5!+*@*,
*
;
不需要太复杂了,这两种方式己足够你给自己的页面加上充分的说明。
7.References(引用)
!" 中有三种 $:变量引用0属性引用和命令引用+5
做为一个使用 !" 的设计者0你和你的 软件工程师必须就模板中引用的特定名了就是<后的名字
达成一致的协议!这样,模板和 代码才可按照你们的意图去结合以输出正确的内容
所有的引用在模板中都表现为一个字符串 假设一个引用变量 $foo的值事实上是一个 0
* 在处理时将调用它的3*去解析这个字符串所代表的对象
,,,
5