18

我有以下片段要从速度模板文件中渲染。

xyz $$foo

美元符号需要从 VTL 解析器中转义。在模板文件中,我将其表示为

xyz \$\$foo

我预计

xyz $$foo

但我明白了

xyz \$foo

我究竟做错了什么??

4

3 回答 3

45

一种方法是使用固定的字符串变量,即为 $ 符号设置一个变量,然后使用它。

#set ( $d = "$")
xyz ${d}${d}foo

它给出了预期的输出

xyz $$foo
于 2013-03-21T13:04:44.983 回答
3

您可能还想查看EscapeTool的速度。

一旦将它包含在上下文中(例如,在名称“esc”下),您就可以使用 ${esc.d} 来获取美元符号。不过,对于这种特殊情况,您提到的方法更容易。

我认为值得一提,因为它提供了其他几种方便的方法来适当地转义字符串,如果您的模板正在生成 Java/javascript/html 等。

于 2013-10-07T08:15:11.890 回答
-3

使用 Velocity 的NumberTool也可能会有所帮助。

它有一个内置的货币格式化程序:

$myNumber                   -> 13.55
$number.format($myNumber)   -> 13.6
$number.currency($myNumber) -> $13.55
$number.integer($myNumber)  -> 13
于 2016-04-25T17:50:57.173 回答