Velocity中的条件运算符

时间:2009-07-13 13:08:54

标签: velocity ternary-operator

有没有办法在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

有什么想法吗?

2 个答案:

答案 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')")