Velocity有两种形式的引用:$foo
(默认表示法)和$!foo
(“安静”表示法)。如果在上下文中无法解析'foo'
,则在第一种情况下,您将在输出中获得$ foo。在后一种情况下,它将呈现为空字符串。
第三种情况是否有类似的简洁语法,只有在无法找到'foo'
时才会抛出NPE?我们有$a.b.c
之类的内容,如果'a'
或'b'
丢失,我们希望失败,但希望没有免费#if($a && $a.b && $a.b.c) ... #end
检查整个地方的模板。< / p>
或者,可以修改$!
的行为,还是可以引入新术语(如$~
)?
答案 0 :(得分:1)
Strict Reference Mode做了你想要的事情。它不改变第三个引用形式,而是改变$var
的工作方式,这样如果在处理变量时遇到null
(以及可能的链接方法调用),则抛出异常而不是打印文字输入语法回来。
可以将自己的$~
语法放在Velocity中(只要有足够的时间和精力,任何事都可以),但不容易。你必须大量修补源代码,从语法定义到如何处理引用。