## 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那章节会更详细描述。
- 1. 关于
- 2. 什么是Velocity?
- 3. Velocity 可以做什么?
- 3.1. Mud Store 示例
- 4. Velocity模板语言(VTL): 介绍
- 5. Hello Velocity World!
- 6. 注释
- 7. 引用
- 7.1. 变量Variables
- 7.2. 属性
- 7.3. 方法
- 8. 形式引用符Formal Reference Notation
- 9. 安静引用符Quiet Reference Notation
- 11. Case Substitution
- 12. 指令
- 12.1. #set
- 12.2. 字面字符串
- 12.3. 条件
- 12.3.1 If / ElseIf / Else
- 12.3.2 关系和逻辑操作符
- 12.4. 循环
- 12.4.1. Foreach 循环
- 12.5. 包含
- 12.6. 解析
- 12.7. 停止
- 12.10. 宏
- 12.10.1. Velocimacro 参数
- 12.10.2. Velocimacro 属性
- 12.10.3. Velocimacro Trivia
- 13. Getting literal
- 13.1. 货币字符
- 13.2. 转义 有效的 VTL 指令
- 13.3. 转义 无效的 VTL 指令
- 14. VTL 格式化问题
- 15. 其它特征和杂项
- 15.1. 数学特征
- 15.2. 范围操作符
- 15.3. 进阶:转义和!
- 15.4. Velocimacro 杂记
- 15.5. 字符串联