《Velocity 模板使用指南》中文版
目 录
1.本文目地和使用对象
2.什么是Velocity?
3.Velocity能为你做什么?. 3
-
一个
Mud Store Example
4.Velocity TemplateLanguage (VTL):介绍.
5.输出第一个VTL页面!
6.Comments(注释)
7.References(引用)
-
Variables(变量)
-
Properties(属性)
-
Methods(命令)
-
属性引用中的属性查找规则
8.Formal Reference Notation(正规引用格式注意事项)
9.Quiet Reference Notation(静态引用输出)
10.Getting literal(语义问题)
-
Currency(货币标志
) -
Escaping Valid VTL References(封装有效的引用
)
11.CaseSubstitution(可选的格式)
12.Directives(指令符号)
-
#set指令
-
Literals (语义解析
) -
Conditionals(条件判断)
-
Loops(循环)
-
Include(引入)
-
Parse(解析模板)
-
Stop
-
Velocimacros(宏调用)
13.注掉 VTL Directives
14.VTL: 一般使用的格式
15.Other Featuresand Miscellany(其它特性和细节)
-
数学计算
-
Range Operator
-
Advanced Issues: Escaping and !
-
Velocimacro Miscellany(关于宏的一些问题)
-
String Concatenation(连结字符串)
16.Feedback
1、本文目地和使用对象
本文主要介绍如何在模板中使用Velocity功能强大的模板语言VTL(VelocityTemplate Language)用法有一个全面的认识,并掌握如何在模板中有效使用。同时,本文提供较多的例子帮您来学习它。感谢您选择Velocity帮助您实现纯正的MVC系统构架。
2、什么是Velocity?
Velocity是一个基于java的模板引擎(templateengine).它可以让视图的设计者在web页面中引用java代码中定义的数据对象和命令。从而使Webdesigners和java开发者依照MVC思想(Model-View-Controller )开发系统,这意味着Web designers只须将精力注用于良好表现力的视图外观设计,而Java程序员则只要关心着如何写出高效简洁的java对象以实现业务逻辑—–Velocity会将他们组装到一起。相比传统的jsp、PHP等脚本语言,Velocity彻底的将避免了在视图设计中出现的java代码,从而保证了web site的长期可维护性。
一定要理解,Velocity是一个templateengine的意思,它还可以从模板中生成SQL语句或其它脚本提供给web pages。 它也可以独立使用—做为一个工具类(utility class)用来生成源代码、报表、邮件模板等—在有需要重复的视图情况下,你应想到使用Velocity.Apache站点提供的另外一个框架Turbine可以和Velocity有效结合以实现true MVCmodel。
3、Velocity能为你做什么?
1、一个Mud Store Example
假设你是一个pagedesigner在为一个在线商店设计页面.我们称这个项目为“The Online Mud Store”.业务发展还不错,客户会订购不同类型的MuD,每个客户都会用自己的帐号密码login,查看选择他们订购的MuD,查看订单,但还有些忠诚用户会购卖不太流行的MuD—-这些不需要出现在页面中显眼的地方。当然,The Online MuD Store必须把每个客户资料及订购信息记录到DB中,现在的问题是,如何让某个客户login后就看到他感兴趣的信息?
使用Velocity!我们为每个客户定制一个页面!这听起来工作量巨大,让我们试试:.
使用Velocity的VTL如下来设计 web page:
<HTML> <BODY> ##指定用户名字 欢迎你: $customer.Name! <table> ###输出用户喜好的MuD #foreach( $mud in $mudsOnSpecial ) #if ( $customer.hasPurchased($mud) ) <tr> <td> $flogger.getPromo( $mud ) </td> </tr> #end #end </table>
使用VTL设计页面就是这么简单!文档《VTL参考中文版》中有更全面的VTL语言介绍,掌握这些,你将会全面体会到Velocity的威力.
4、Velocity Template Language (VTL) 介绍
The Velocity Template Language (VTL)目标是提供一个简洁,易学的方法将动态内容展现到web page上。 a web page设计者可以没有任何编程经验就可以在一天内学会使用它增强你的站点的展示力!
VTL使用引用(references )这种方式将dynamic content(动态内容,一般指java代码生成的数据对象)加入到你的web site,Velocity中的变量(variable)只是refernce中的一种. Variables是用来描述从引入到视图模板中的java数据对象。当然,java代码也可以从模板的VTL中获取数据.以下是一个写在HTML中的VTL变量:
#set( $a = “Velocity” )
VTL声明( statement),所以的VTLstatement都是以#开头,且包含一个指示符(这里是set),当客户访问你的页面时, the Velocity Templating Engine将搜索页面中的所有#符号,如果确定这是一个VTL声明时就按一定规则处理动态内容,符号#仅仅只是表明这可能是一个VTL声明。符号#所跟的set我们用“指示符”这一名词来称呼它(随后介绍更多的指示符),set指示符使用一个表达式(expression) (包含在一对括号里) –将一个值value (这里是Velocity)付给变量a,(变量名在左边,值在右边,用=组合起来)。
在以上的例子中,变量是a ,而符号“$”表明它是一个变量,Velocity中所有变量以符号”$”开头,所付的值要用双引号括起,这个值中还可以再添加Velocity变量,如”Hello$name”,输出的将是name变量所付的值。
这是理解VTL基础的规则:( 以$开头的表示“引用”意思是取得一些东东.而”指示”(Directives)则以#开头来表示,有点“做些什么动作”的意思.
如上便,#set用来指定值给一个变量名$a, 以“$”标示的变量名a的值就是”Velocity”. )
5、输出第一个VTL页面
有HTML文档的任何地方,都可以引用一个变量名来输出值,如下例,先给变量名foo赋值为Velocity,然后将它输出到页面中。
<html> <body> #set( $foo = "Velocity" ) Hello $foo World! </body> <html>
在这个页面上,你看到的将是“Hello Velocity World!”。
为了让查板中的VTL指令更易读,我们强烈建议你每行一条VTL指令,当然这不是必须的.关于set directive的更多功能我们随后再讨论.
6.Comments(注释)
Comments可以让你在模板中包含对VTL或其它问题的说明描述以便与阅读和理解.—但它并不会在最终输出的web pages中看到.如下示例是VTL中的一行注释。
## This is a single line comment.
单行注释是以##开头的一行文字.如要写下多行注释,就要像下面那样,将它们放入#*和*#间:
This is text that is outside the multi-line comment.
Online visitors can see it.
#*
Thus begins a multi-line comment. Online visitorswon’t
see this text because the Velocity TemplatingEngine will
ignore it.
*#
不需要太复杂了,这两种方式己足够你给自己的页面加上充分的说明。