首页 > 代码库 > 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语言的介绍