Velocity模板语言(VTL)语法使用
Velocity模板语言 (VTL)提供了容易,简单,和清洁方式合并动态内容在你的网页上。即使一个网页开发者有少量或者没有编程经验也能很快有能力使用VTL嵌入动态内容到你的Web页面。
一、引用
在VTL中有三种类型的引用: 变量,属性和方法。作为一个使用VTL的设计者, 你和工程师必须一起在你的模板中,指定名字以及它所代表的引用。
1. 变量
VTL中变量标识符前面需要添加 “$” 来进行标记. AVTL标识符必须以字母 (a .. z or A .. Z)开始. 其他的字符可以使用下面几种:
- alphabetic (a .. z, A .. Z)
- numeric (0 .. 9)
- hyphen (“-“)
- underscore (“_”)
1.1变量的定义
#set($name =“velocity”)
等号后面的字符串 Velocity 引擎将重新解析,例如出现以$开始的字符串时,将做变量的替换。
#set($hello =“hello $name”)
上面的这个等式将会给 $hello 赋值为“hello velocity”
1.2 变量的使用
在模板文件中使用$name 或者 ${name} 来使用定义的变量。推荐使用 ${name} 这种格式,因为在模板中同时可能定义了类似$name 和 $names 的两个变量,如果不选用大括号的话,引擎就没有办法正确识别 $names 这个变量。
#set($name =“ricky”)
Welcome $name to velocity\.com
输出结果为:Welcome ricky to velocity.com
2.属性
$customer.Address
3.方法
$customer.getAddress()
$data.get("key") 若data为Map,代表取对应key的value
4.静态引用标识符
当Velocity遇到一个没有定义的引用时,则原样输出
$!{var}:如果有值则输出,如果为空,则不显示;
${var}:如果有值则输出,如果为空,则将该代码原样输出;
二、循环
在 Velocity 中循环语句的语法结构如下:
#foreach($element in $list)
This is $element
$velocityCount
#end
Velocity 引擎会将 list 中的值循环赋给 element 变量,同时会创建一个 $velocityCount 的变量作为计数,从 1 开始,每次循环都会加 1.
三、条件语句
条件语句的语法如下:
#if(condition)
#elseif(condition)
#else
#end
四、关系操作符
Velocity 引擎提供了 AND、OR 和 NOT 操作符,分别对应&&、||和! 例如:
#if($foo && $bar)
#end
五、宏
Velocity 中的宏可以理解为函数定义。定义的语法如下:
#macro(macroName arg1 arg2 …)
#end
调用这个宏的语法是:
#macroName(arg1 arg2 …)
这里的参数之间使用空格隔开,下面是定义和使用 Velocity 宏的例子:
#macro(sayHello $name)
hello $name
#end
#sayHello(“velocity”)
输出的结果为:hello velocity
六、#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”)