Velocity中的条件运算符

pei*_*rix 11 velocity ternary-operator

有没有办法在Velocity中做三元运算符?这就是我想做的事情:

#set ($name = ($args.get(0) == "") ? "default" : $args.get(0))
Run Code Online (Sandbox Code Playgroud)

而不是粗糙的if-else

#if ($args.get(0) == "")
    #set ($name = "default")
#else
    #set ($name = $args.get(0))
#end
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Mar*_*ark 7

根据经验和阅读VTL参考,没有办法做到这一点.如果你有很多这样的作业,也许你可以考虑定义自己的velocimacro,试着避免重复if else.

例如,如果宏只打印一个字符串,则可以执行以下操作:

#set ($name = "#condOpt($args.get(0), "default")")
Run Code Online (Sandbox Code Playgroud)

宏调用周围的双引号很重要,因为这意味着解析了#set的RHS.