13.2. 转义 有效的 VTL 指令

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

  1. #set( $email = "foo" )
  2. $email

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

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

  1. ## The following line defines $email in this template:
  2. #set( $email = "foo" )
  3. $email
  4. \$email

将显示为:

  1. foo
  2. $email

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

  1. $email
  2. \$email
  3. \\$email
  4. \\\$email

将显示为:

  1. $email
  2. \$email
  3. \\$email
  4. \\\$email
  5. \\$email\\\$email

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

  1. #set( $foo = "gibbous" )
  2. $moon = $foo

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