引用的转义
• 货币符号
$是美元的符号,在文本中出现的"$2.5"这样的字符串,是不会被Velocity解释为一个变量或者一个属性的,因为2.5或者2或者5都不是一个VTL标识符。
• 转义
假如需要在文本中最后显示"$foo"这四个字符组成的字符串本身,而非变量$foo的值,可以使用转义字符(\)。假定$foo已经定义过了,那么:
#set($foo="bar") $foo 输出 bar \$foo 输出 $foo \\$foo 输出 \bar \\\$foo 输出 \$foo
假如$foo没有定义,那么:
$foo 输出 $foo \$foo 输出 \$foo \\$foo 输出 \\$foo \\\$foo 输出 \\\$foo
指令的转义
引用的转义使用"\",指令的转义也是使用"\"。但是,指令的转义要比引用的转义复杂很多。例如:
#if($foo) Go! #end $foo为true,输出Go!;否则不输出任何内容。
• 使用一个转义符号--"\"
\#if( $foo ) Go! \#end 此时,"\"和"#"结合,从而破坏了原本的#if(),而$foo作为判断条件,也不会被解析。 所以上面这段代码,无论$foo是true还是false,结果都是 #if( $foo ) Go! #end 这类似于使用了#literal() ... #end指令。
• 使用两个转义符号--"\\"
\\#if( $foo ) Go! \\#end 1、$foo为true,输出:\ Go! \ 2、$foo为false,输出:\ 首先,#if前面的两个"\",它们会被解析为一个"\"。假定$foo是true,那么会输出"Go!",并且是紧跟在刚才的"\"后面(因为没有换号符);若$foo为false则仅输出第一个被解析的"\"。
• 使用三个转义符号--"\\\"
\\\#if($foo) Go! \\#end 前两个"\"被解析为"\",第三个"\"和后面的"#"解析为"#",#if()被破坏。所以输出就是 \#if($foo) Go! \...... 注意最后那里,有一个合法的#end,但是它是多余的,所以这一段代码是会报错的