Значения параметров макроса 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
Другие вопросы по тегам