operatore condizionale in Velocity
-
12-09-2019 - |
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?
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