1

Velocity 有两种引用形式:($foo默认表示法)和$!foo(“安静”表示法)。如果'foo'无法在上下文中解决,在第一种情况下,您只会在输出中呈现 $foo。在后一种情况下,它将呈现为空字符串。

第三种情况是否有类似的简洁语法,当'foo'找不到时会简单地抛出 NPE?我们有类似的东西,如果或丢失,$a.b.c我们希望失败,但希望没有无偿检查使模板到处乱七八糟。'a''b'#if($a && $a.b && $a.b.c) ... #end

或者,是否可以$!修改 的行为,或者可以引入一个新术语(如$~)?

4

1 回答 1

1

在 Velocity 1.6 中引入的Strict Reference Mode可以执行您想要的操作。它没有第三个引用形式,而是改变了$var工作方式,以便如果null在处理变量(以及可能的链式方法调用)时遇到异常,则会引发异常,而不是打印文字输入语法。

可以将自己的$~语法放入 Velocity 中(只要有足够的时间和精力,一切皆有可能),但并不容易。您必须大量修补源代码,从语法定义到如何处理引用。

于 2013-10-29T18:28:32.290 回答