有没有办法在Velocity中做三元运算符? 这就是我想做的事情:
#set ($name = ($args.get(0) == "") ? "default" : $args.get(0))
而不是chunky if-else
#if ($args.get(0) == "")
#set ($name = "default")
#else
#set ($name = $args.get(0))
#end
有什么想法吗?
答案 0 :(得分:7)
根据经验和阅读VTL Reference,没有办法做到这一点。如果你有很多这样的作业,也许你可以考虑定义自己的velocimacro,试着避免重复if else。
例如,如果宏只打印一个字符串,则可以执行以下操作:
#set ($name = "#condOpt($args.get(0), "default")")
宏调用周围的双引号非常重要,因为这意味着解析了#set的RHS。
答案 1 :(得分:2)
我最后按照你的说法做了,Mark:
#macro(condOp $check, $default)
#if ($check == "")
$default
#else
$check
#end
#end
然后我可以这样称呼它:
#set ($name = "#condOp($args.get(0), 'default')")