从Velocity 1.6起,不支持可选参数或命名参数。最近有一个补丁提交了这个功能,所以我们可能会在未来的版本中看到它。
与此同时,考虑通过一个列表或值的地图。例如,你可以在地图上则params的传递如下(需要速度1.5或更大):
#macro(myMacro $p)
item 1: $p.param1
item 2: $p.param2
#end
#set($params = {"param1" : "val1", "param2":"val2"})
#myMacro($params)
显示:
item 1: val1
item 2: val2
要处理的可选参数,使用宏内的#if检查为参数。在地图中添加新元素有点麻烦。由于Java方法“put”返回一个值,所以你必须使用#set来处理返回值。 (否则它会显示在结果文本中)。
#macro(myMacro $p)
#if(!$p.param1)#set($dummy = $p.put("param1", "default1"))#end
#if(!$p.param2)#set($dummy = $p.put("param2", "default2"))#end
#if(!$p.param3)#set($dummy = $p.put("param3", "default3"))#end
item 1: $p.param1
item 2: $p.param2
item 3: $p.param3
#end
#set($params = {"param1" : "val1", "param2":"val2"})
#myMacro($params)
显示器
item 1: val1
item 2: val2
item 3: default3