Velocity 1.6 の時点では、オプションまたは名前付きパラメーターはサポートされていません。この機能を含む最近のパッチが提出されたため、将来のリリースで利用可能になる可能性があります。
それまでの間、値のリストまたはマップを渡すことを検討してください。たとえば、次のようにパラメーターのマップを渡すことができます (Velocity 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