Velocity 基本语法

Velocity 基本语法

Velocity 是一个基于 Java 的模板引擎框架,提供的模板语言能够使用在 Java 中定义的对象和变量上。Velocity 是 Apache 基金会的项目,开发的目标是分离 MVC 模式中的持久化层和业务层。可是在实际应用过程当中,Velocity 不单单被用在了 MVC 的架构中,还能够被用在如下一些场景中。编程

  1. Web 应用:开发者在不使用 JSP 的状况下,能够用 Velocity 让 HTML 具备动态内容的特性。数组

  2. 源代码生成:Velocity 能够被用来生成 Java 代码、SQL 或者 PostScript。有不少开源和商业开发的软件是使用 Velocity 来开发的。架构

  3. 自动 Email:不少软件的用户注册、密码提醒或者报表都是使用 Velocity 来自动生成的。使用 Velocity 能够在文本文件里面生成邮件内容,而不是在 Java 代码中拼接字符串。框架

  4. 转换 xml:Velocity 提供一个叫 Anakia 的 ant 任务,能够读取 XML 文件并让它可以被 Velocity 模板读取。一个比较广泛的应用是将 xdoc 文档转换成带样式的 HTML 文件。编程语言

基本模板语言语法使用
在 hellovelocity.vm 里面能够看到不少以 #$符开头的内容,这些都是 Velocity 的语法。在 Velocity 中全部的关键字都是以 # 开头的,而全部的变量则是以$开头。Velocity 的语法相似于 JSP 中的 JSTL,甚至能够定义相似于函数的宏,下面来看看具体的语法规则。
1、变量
和咱们所熟知的其余编程语言同样,Velocity 也能够在模板文件中有变量的概念。
变量定义函数

#set($name =“velocity”)code

等号后面的字符串 Velocity 引擎将从新解析,例如出现以$开始的字符串时,将作变量的替换。xml

#set($hello =“hello $name”)对象

上面的这个等式将会给$hello 赋值为“hello velocity”模板引擎

变量的使用

在模板文件中使用$name 或者${name} 来使用定义的变量。推荐使用${name} 这种格式,由于在模板中同时可能定义了相似$name$names 的两个变量,若是不选用大括号的话,引擎就没有办法正确识别$names 这个变量。
对于一个复杂对象类型的变量,例如$person,能够使用${person.name} 来访问 person 的 name 属性。值得注意的是,这里的${person.name} 并非直接访问 person 的 name 属性,而是访问 person 的 getName() 方法,因此${person.name}${person.getName()} 是同样的。

变量赋值

在第一小点中,定义了一个变量,同时给这个变量赋了值。对于 Velocity 来讲,变量是弱数据类型的,能够在赋了一个 String 给变量以后再赋一个数字或者数组给它。能够将如下六种数据类型赋给一个 Velocity 变量:变量引用, 字面字符串, 属性引用, 方法引用, 字面数字, 数组列表。

#set($foo = $bar) #set($foo =“hello”) #set($foo.name = $bar.name) #set($foo.name = $bar.getName($arg)) #set($foo = 123) #set($foo = [“foo”,$bar])

2、循环
在 Velocity 中循环语句的语法结构以下:

#foreach($element in $list) This is $element $velocityCount #end

Velocity 引擎会将 list 中的值循环赋给 element 变量,同时会建立一个$velocityCount 的变量做为计数,从 1 开始,每次循环都会加 1.
3、条件语句
条件语句的语法以下

#if(condition) ... #elseif(condition) ... #else ... #end

4、关系操做符
Velocity 引擎提供了 AND、OR 和 NOT 操做符,分别对应&&、||和! 例如:

#if($foo && $bar) #end

5、宏
Velocity 中的宏能够理解为函数定义。定义的语法以下:

#macro(macroName arg1 arg2 …) ... #end

调用这个宏的语法是:

#macroName(arg1 arg2 …)

这里的参数之间使用空格隔开,下面是定义和使用 Velocity 宏的例子:

#macro(sayHello $name) hello $name #end #sayHello(“velocity”)

输出的结果为 hello velocity

6、#parse#include

#parse#include 指令的功能都是在外部引用文件,而二者的区别是,#parse 会将引用的内容当成相似于源码文件,会将内容在引入的地方进行解析,#include 是将引入文件当成资源文件,会将引入内容原封不动地以文本输出。分别看如下例子:

foo.vm 文件:

#set($name =“velocity”)

parse.vm

#parse(“foo.vm”)

输出结果为:velocity

include.vm:

#include(“foo.vm”)

输出结果为:#set($name =“velocity”)

以上内容包含了部分 Velocity 的语法,详细的语法内容能够参考 Velocity 的官方文档。

写于 2015-07-14

相关文章
相关标签/搜索