Apache Velocity宏默认参数值



我想更新一个在多个不同.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如果这很重要的话。然而,如果不进行一系列更新/重新测试,我无法轻松更改此属性。

默认参数也不适用。但你可以做这个变通办法:

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

相关内容

  • 没有找到相关文章

最新更新