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?

Foi útil?

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
scroll top