velocityで数値の比較を行うときの注意点

Velocityで数値の比較を行う際は、両辺の型が同じでなければいけません。

$!result.Idがlongの値を返すとき下記のように比較を行うと、Error in evaluation of == expression.とエラーがログに出力されます。

#if($!result.Id==10)

#elseif($!result.Id > 10)

#else

#end

これはVelocityで数値はIntegerで扱われるためです。 もし$!result.Idが10または20だとしても条件式は常にfalseを返すためelse文の処理を行います。

そのためvelocityで数値の比較を行う際は変数のほうをIntegerに変換して比較する必要があります。