13.2. 转义 有效的 VTL 指令

某些情况使用Velocity可能会觉得很烦恼。逃避特殊符是处理出现在你的模板中VTL特殊符有效方法,就是使用反斜杠(“\”)。

#set( $email = "foo" )
$email

假如Velocity在你的模板中遇到$email,它会搜索上下文,得到相应的值。这里的输出是foo,因为$email被定义了。假如$email没有被定义,输出会是$email。

设想$email被定义了(例如,它的值是foo),而且你想输出$email。这里有几种方法能达到目的,但是最简单的是使用逃避符。

## The following line defines $email in this template:
#set( $email = "foo" )
$email
\$email

将显示为:

foo
$email

注意到“\”屏蔽了左边的“$”。屏蔽左边规则,使得\$email显示为\$email。那些例子与$email没有定义相比较。

$email
\$email
\\$email
\\\$email

将显示为:

$email
\$email
\\$email
\\\$email

\\$email\\\$email

注意Velocity处理定义了的references与没有定义的不一样。这里set$foo的值为gibbous。

#set( $foo = "gibbous" )
$moon = $foo

输出会是:$moon=gibbous,$moon按照字面上输出因为它没有定义,gibbous替代$foo输出。避开VTL的directives还有其他方法,在Directives那章节会更详细描述。