方法在JAVA代码中定义,并作一些有用的事情,比如运行一个计算器或者作出一个决定。方法是实际上也是引用,由前导符"$"后跟一个VTL 标识符,后跟一个VTL 方法体(Method Body)。 VTL 方法体由一个VTL 标识符后跟一个左括号,再跟可选的参数列表,最后是右括号。下面是一些有效的方法示例:
$customer.getAddress() $purchase.getTotal() $page.setTitle( "My Home Page" ) $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"] ) ## 不能将参数列表传递给$sun.Planets
$sisyphus.pushRock() ## Velocity 假定我意思是$sisyphus.getRock()
$book.setTitle( "Homage to Catalonia" ) ## 不能传递一个参数列表
|
引用的简略符号如上所述,但是另外还有一种引用的形式符号,示例如下:
${mudSlinger} ${customer.Address} ${purchase.getTotal()} |
在大多数情况下,我们将使用引用的简略符号,但在一些情况下,也需要拥戴哦形式引用符以便正确处理。
假定你正在纸片上构件一个句子,将使用$vice 作为句子中名词的词根。我们的目标是允许人们选择词根,然后产生以下两种结果之一:
"Jack is a pyromaniac."
或者 "Jack is a kleptomaniac."。
在这种情况下,使用简略符号是不太充分的。考虑到下面的例子:
Jack is a $vicemaniac. |
这里有个不确定性, Velocity 假定 $vicemaniac,(而不是 $vice) 是一个你想要使用的标识符。 找不到$vicemaniac的值,他将返回$vicemaniac。使用形式符号便可解决这个问题:
Jack is a ${vice}maniac |
现在Velocity 知道 $vice(而不是 $vicemaniac) 是一个引用。形式符号常用在饮用咋模板中和文本直接邻近的地方。
当 Velocity 遇到一个位定义的引用时,其通常行为是输出这个引用的映像。比如,假设下面的引用出现在模板中的一部分:
<input type="text" name="email" value="$email"/> |
当表单初次装入时,变量引用$email 无值,你宁愿是一个空白域而不是具有值"$email"。使用安静引用符可以绕过Velocity的常规行为,在VTL中不用$email 而是用$!email 符号。 所以,上面的例子将会看起来像下面的样子:
<input type="text" name="email" value="$!email"/> |
现在,当表单初次装入时, $email 仍然没有值,但是将输出空字符串而不是"$email"。
形式和安静引用符可以一起使用,如下所示:
<input type="text" name="email" value="$!{email}"/> |