$person.setAttributes( ["Strange", "Weird", "Excited"] )
前 两 个 例 子 $customer.getAddress() 和 $purchase.getTotal() 看 起 来 挺 想 上 面 的 属 性
$customer.Address 和 $purchase.Total。如果你觉得他们之间有某种联系的话,那你是正确的。
VTL 属性可以作为 VTL 方法的缩写。$customer.Address 属性和使用$customer.getAddress()方法具
有相同的效果。如果可能的话使用属性的方式是比较合理的。属性和方法的不同点在于你能够给一个方法
指定一个参数列表。
非正式定义能够用下面的方法:
$sun.getPlanets()
$annelid.getDirt()
$album.getPhoto()
我们期待那些方法返回属于太阳系的行星的名称,喂养我们的蚯蚓,或者从相册里面取出一张照片 。
只有长符号为下面的方法服务。
$sun.getPlanet( ["Earth", "Mars", "Neptune"] )
## Can't pass a parameter list with $sun.Planets
$sisyphus.pushRock()
## Velocity assumes I mean $sisyphus.getRock()
$book.setTitle( "Homage to Catalonia" )
## Can't pass a parameter list
正式 reference 标记
非正式 references 用于上述的例子中。但是同样有正式的 references,如下面所示:
${mudSlinger}
${customer.Address}
${purchase.getTotal()}
在几乎所有场合你都可以使用非正式 references,但是在某些场合,只能使用正式 reference 才能
正确处理。
设想你创建一个句子:$vice 作为句子的名词 。目标是为了使某些人选择不同的词,产生下面两种
结果之一:"Jack is a pyromaniac." 或者 "Jack is a kleptomaniac."。使用非正式定义不太适合用
于这种情况。看一下下面的例子:
Jack is a $vicemaniac.
本来变量是$vice 现在却变成了$vicemaniac,这样 Veloctiy 就不知道您到底要什么了。所以,应
该使用正是格式书写
Jack is a ${vice}maniac.
现在 Velocity 就 知道 reference 是 $vice ,而 不是 $vicemaniac 。 正 式 定 义 经常 用 于 模 板中
refernces 与文本连接在一起的情况。
Quiet reference notation
当 Velocity 遇 到 没 有定 义的 reference , 通 常它 会 直接 输 出 reference。 例如 : 假 如 下面 的
reference 出现在一个 VTL 模板中:
<input type="text" name="email" value="$email"/>