如何在 Velocity 中执行内联 if/else(也称为三元运算符)?

2022-09-01 02:23:22

在纯Java中,我可以这样做:

value = (a > b) ? a : b;

而在速度中,长形式将是:

#if($a > $b)          
    #set($value = $a)
#else
    #set($value = $b)
#end

Velocity中有简短的形式吗?我希望能够做一个如果/否则内联。


答案 1

你可以做

#set($value = "#if($flag)red#{else}blue#end")

答案 2

您不需要#macro或#set指令。关键是使用大括号作为#else指令。

#if($plural)were#{else}was#end

文档(几乎在条件部分的末尾):

还有一个有用的说明。如果您希望在#else指令之后立即包含文本,则需要使用紧邻该指令的大括号,以将其与以下文本区分开来。(任何指令都可以用大括号分隔,尽管这对于#else最有用)。

注意:无论文档说什么,我发现在使用简单的内联if语句时,可能需要添加大括号。

#if($includePrefix)Affected #{end}Inspection

推荐