從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