Значения параметров макроса 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
если это имеет значение Тем не менее, я не могу легко изменить это свойство без большого количества обновления / повторного тестирования.
1 ответ
Параметр по умолчанию у меня тоже не работает. Но вы можете сделать это обходной путь:
#macro(my_macro $param)
#if(!$param)
#set($param = "oldValue")
#end
$param
#end