Условный оператор в Velocity

Есть ли способ сделать тройные операторы в Velocity? Это то, что я хотел бы сделать:

#set ($name = ($args.get(0) == "") ? "default" : $args.get(0))

Вместо короткого if-else

#if ($args.get(0) == "")
    #set ($name = "default")
#else
    #set ($name = $args.get(0))
#end

Любые идеи?

Ответ 1

Для получения опыта и чтения Ссылка VTL нет возможности сделать это. Если бы у вас было много таких заданий, возможно, вы могли бы попытаться определить свой собственный велосимакро, чтобы попытаться избежать повторения if else.

Например, если макрос печатает только одну строку, вы можете сделать следующее:

#set ($name = "#condOpt($args.get(0), "default")")

Двойные кавычки вокруг вызова макроса важны, так как это означает, что анализируется RHS #set.

Ответ 2

Я закончил делать, как вы сказали, Марк:

#macro(condOp $check, $default)
    #if ($check == "")
        $default
    #else
        $check
    #end
#end

И тогда я могу назвать это так:

#set ($name = "#condOp($args.get(0), 'default')")