operador condicional no Velocity
-
12-09-2019 - |
Pergunta
Existe uma maneira de fazer ternários operadores em Velocity? Isto é o que eu gostaria de fazer:
#set ($name = ($args.get(0) == "") ? "default" : $args.get(0))
Em vez de pedaços if-else
#if ($args.get(0) == "")
#set ($name = "default")
#else
#set ($name = $args.get(0))
#end
Todas as idéias?
Solução
A partir da experiência e lendo a VTL Referência não há nenhuma maneira para fazer isso. Se você tinha muitas atribuições como esta talvez você poderia olhar para definir o seu próprio velocimacro para tentar evitar a repetição do caso outra pessoa.
Por exemplo, se a macro imprime apenas uma única seqüência que você pode fazer o seguinte:
#set ($name = "#condOpt($args.get(0), "default")")
As aspas em torno da chamada de macro são importantes, isso significa que o RHS do #set é analisado.
Outras dicas
eu acabei fazendo como você disse, Mark:
#macro(condOp $check, $default)
#if ($check == "")
$default
#else
$check
#end
#end
E então eu posso chamá-lo assim:
#set ($name = "#condOp($args.get(0), 'default')")
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow