首页 > 代码库 > Velocity语言的介绍
Velocity语言的介绍
Velocity语言的介绍
2016-09-06 15:39:25
语言介绍
Velocity是一种Java模版引擎技术,是一个基于Java的模板引擎(template engine)。她允许任何人简简单单的使用模板语言类引用由Java代码定义的对象。
当Velocity应用于web开发时,界面设计人员可以和Java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序员关注业务逻辑编码。Velocity将Java代码从web页面中分离出来,这样web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。
基础使用
在Velocity中,变量的定义都是使用“$”开头的,$作为Velocity的标识符。字母、数字、中划和下划线都可以作为Velocity的定义变量。
Velocity——注释
单行注释,使用## 如:##<div class="tt">$shopUser.username</div> 会隐藏此div
多行注释,使用 #* comment *# 如: #* <div class="tt">$shopUser.username</div> *#
Velocity——引用
注意:规范的引用写法应该是${Foo},也可以使用下面的形式; 规范的肯定是不会错的。
如果没有对应的引用,VTL会作为普通的字符串处理。
在Velocity Template Language(VTL)中,有三种类型的引用: 变量,属性,方法。
所有的引用都被看做是字符串,如果某个引用是一个整型值,Velocity会调用toString()方法,将她转换为String。
变量:(如:$username)
变量是由$和紧跟其后的VTL标识符组成的。
VTL标识符必须以字母开头,后面可以包含并且仅能包含字母、数字、下划线以及减号。
像$2.4这样的字符串,是不会被识别为变量的,因为2.4不是一个VTL标识符。
属性:(如:$shopUser.username)
属性是由四部分组成,依次是$+VTL标识符+“.”+VTL标识符。
这个标识符有两个含义,它可以表示在shopUser标记的hashtable中寻找并返回这个key对应的value,也可以表$shopUser.getUsername这个方法(方法在java程序中定义)。如:{‘$!shopUser.getUsername()‘}。
方法:如($shopUser.getPass("test"))
方法是由四部分组成,依次是$+VTL+‘.‘+函数调用。这里的函数调用是可以带参数的。
很显然,属性有时是方法的一种简写,$Foo.bar和$Foo.getbar()是等价的,这种情况下,尽量使用属性的形式。但是方法有参数的话,就没有和它等价的属性了。
属性的搜索规则:
属性可以表示为调用方法,也可表示从hashtable中找值,对于$Foo.bar来说,Velocity会按照以下顺序解析:
$Foo.getbar()>$Foo.getBar()> $Foo.get("bar")>$Foo.isBar()
而对于$Foo.Bar来说,Velocity会按照以下顺序解析:
$Foo.getBar() > $Foo.getbar() > $Foo.get("Bar") > $Foo.isBar()
所以,前两个是寻找方法,第三个是在hashtable中找值,第四个是一个is判断。
另外需要注意的是,属性不会被解析为对象的实例变量。$Foo.bar可以表示$Foo.getbar()或者$Foo.get("bar"),但是它不表示Foo这个java对象的bar属性。
Velocity——#指令
引用可以让模板设计者生成动态内容,而指令允许设计者真正的负责页面的展现和内容。
#set
#set指令用于向一个变量或者属性赋值。
其格式为 #set($username="chen")或者#set($username.bar=$test) 。
Velocity语言的介绍