Apache Velocity宏默认参数值

时间:2015-02-26 21:49:59

标签: java velocity vtl

我想更新一个在多个不同的.vtl文件之间共享的宏,以包含一个新参数。但是,我只想更改我的一个.vtl文件中的调用,并保持其他文件保持不变。所以,我基本上想要添加一个可选参数,或者如果没有提供参数,则添加一个带默认值的参数。

文档(here)在"#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 如果重要的话但是,如果没有一堆更新/重新测试,我就无法轻易更改此属性。

1 个答案:

答案 0 :(得分:1)

默认参数也不适合我。但是你可以解决这个问题:

#macro(my_macro $param)
  #if(!$param)
     #set($param = "oldValue")
  #end
  $param
#end