我想更新在多个不同 .vtl 文件之间共享的宏以包含新参数。但是,我只想更改其中一个 .vtl 文件中的调用,而其他文件保持不变。所以,我本质上想添加一个可选参数,或者如果没有提供参数,则添加一个具有默认值的参数。
文档(此处)在“#macro”部分中提到了可选的默认值,但经过几个小时的烦躁,我终生无法弄清楚正确的语法是什么。
所以我想采用现有的宏:
#macro( my_macro )
oldValue
#end
并把它变成一个宏,如:
#macro( my_macro $param="oldValue" )
$param
#end
我可以通过这两个调用中的任何一个正确调用它并获得指定的输出:
#my_macro() => oldValue
#my_macro("newValue") => newValue
我已经尝试了文档中指定的所有排列,但找不到任何有效的方法。有谁知道正确的语法?有没有可能我丢失的财产?
我正在使用 Velocity 1.7 和 VelocityTools 2.0。如果这很重要,我也在使用该设置
velocimacro.arguments.strict=true
。但是,如果不进行大量更新/重新测试,我无法轻松更改此属性。