Domanda

C'è un modo per fare gli operatori ternari in Velocity? Questo è quello che mi piacerebbe fare:

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

Invece di grosso if-else

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

Tutte le idee?

È stato utile?

Soluzione

Per esperienza e la lettura del VTL Riferimento non c'è modo per farlo. Se tu avessi un sacco di compiti come questo forse si poteva guardare a definire il proprio velocimacro per cercare di evitare di ripetere l'if else.

Ad esempio, se la macro stampa solo una singola stringa che si poteva fare quanto segue:

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

Le doppie virgolette attorno alla chiamata macro sono importanti in quanto significa che il RHS del #SET viene analizzato.

Altri suggerimenti

ho finito per fare come lei ha detto, voto:

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

E poi posso chiamare in questo modo:

#set ($name = "#condOp($args.get(0), 'default')")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top