Mic*_*ael 33 java velocity if-statement
在纯Java中,我可以这样做:
value = (a > b) ? a : b;
Run Code Online (Sandbox Code Playgroud)
而在Velocity中,长形式将是:
#if($a > $b)
#set($value = $a)
#else
#set($value = $b)
#end
Run Code Online (Sandbox Code Playgroud)
Velocity中有简短形式吗?我希望能够做一个if/other inline.
aio*_*obe 46
你可以做
#set($value = "#if($flag)red#{else}blue#end")
Run Code Online (Sandbox Code Playgroud)
KSe*_*Sev 19
您不需要#macro或#set指令.关键是使用大括号表示#else指令.
#if($plural)were#{else}was#end
Run Code Online (Sandbox Code Playgroud)
从doc(几乎在条件部分的末尾):
一个更有用的说明.如果希望在#else指令后立即包含文本,则需要在指令周围使用大括号,以区别于以下文本.(任何指令都可以用大括号分隔,尽管这对#else最有用).
注意:无论文档说什么,我都发现在使用简单的内联if语句时可能需要添加大括号.
#if($includePrefix)Affected #{end}Inspection
Run Code Online (Sandbox Code Playgroud)
还有一种可重用宏的方法:
#macro(iif $cond $then $else)#if($cond)$then#else$else#end#end
Run Code Online (Sandbox Code Playgroud)
然后
#define ($value)
#iif("$a > $b", $a, "$b")
#end
Run Code Online (Sandbox Code Playgroud)
请注意,velocity docs指出使用宏会对性能产生一些影响.
归档时间: |
|
查看次数: |
25963 次 |
最近记录: |