Pregunta

¿Hay una manera de hacer los operadores ternarios de la velocidad? Esto es lo que me gustaría hacer:

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

En lugar de grueso if-else

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

¿Alguna idea?

¿Fue útil?

Solución

A partir de la experiencia y la lectura de la VTL Referencia no hay manera para hacer esto. Si usted tenía un montón de tareas como esto tal vez usted podría mirar a la definición de su propia Velocimacro para tratar de evitar que se repita el caso de los demás.

Por ejemplo, si la macro sólo imprime una sola cadena que podría hacer lo siguiente:

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

Las comillas dobles alrededor de la llamada a la macro son importantes, ya que significa que el lado derecho de la #set se analiza.

Otros consejos

terminé haciendo como usted ha dicho, Mark:

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

Y entonces puedo llamarlo así:

#set ($name = "#condOp($args.get(0), 'default')")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top