Velocity 变量

Java Velocity中所有的变量都是以 $ 开头,所有的关键字都是以 # 开头。

变量定义

#set($name =“velocity”)

Velocity引擎将会给¥name赋值为“codingdict”

变量赋值

模板中,通过#set指令给变量赋值

#set($a="aaa") ##字符串赋值
#set($monkey.Say=["not", "fault"]) ##ArrayList赋值
#set($monkey,Map={"banana":"good", "beef":"bad"}) ##Map赋值
//各种赋值方法
#set($foo = $bar) //变量引用
#set($foo =“hello”) //字符串
#set($foo.name = $bar.name) //属性引用
#set($foo.name = $bar.getName($arg)) //方法引用
#set($foo = 123) //数字
#set($foo = [“foo”,$bar]) //数组列表

例子

#set($root = "www")  
#set($name = "codingdict.com")  
#set($template = "$root.$name")  
$template

执行输出:

www.codingdict.com

总结

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

下一章:Velocity macro 宏指令

Java Velocity中macro宏指令用于定义一个VTL模板的重复代码块脚本函数(宏),不推荐在界面模板中大量使用。定义#macro(宏的名称 $参数1 $参数2 .....) 语句体(即 ...