在纯Java中,我可以这样做:
value = (a > b) ? a : b;
而在Velocity中,长形式将是:
#if($a > $b)
#set($value = $a)
#else
#set($value = $b)
#end
Velocity中有简短形式吗?我希望能够做一个if / other inline。
答案 0 :(得分:45)
你可以做到
#set($value = "#if($flag)red#{else}blue#end")
答案 1 :(得分:17)
您不需要#macro或#set指令。关键是使用大括号表示#else指令。
#if($plural)were#{else}was#end
来自doc(几乎在条件部分的末尾):
另一个有用的说明。如果希望在#else指令后立即包含文本,则需要在指令周围使用大括号,以区别于以下文本。 (任何指令都可以用大括号分隔,尽管这对#else最有用)。
注意:无论文档说什么,我都发现在使用简单的内联if语句时可能需要添加大括号。
#if($includePrefix)Affected #{end}Inspection
答案 2 :(得分:5)
还有一种可重用宏的方法:
#macro(iif $cond $then $else)#if($cond)$then#else$else#end#end
然后
#define ($value)
#iif("$a > $b", $a, "$b")
#end
请注意,velocity docs声明使用宏会对性能产生一些影响。