Velocityの記述ルール
現場のプロジェクトでView層にVelocityを使っているので、今更ながら記述ルールを整理。
ルール | 記述例 |
---|---|
オブジェクトを表示するときは必ずサイレント記法を使う | $!hogeNullObj |
オブジェクトのnull判断はオブジェクトをそのまま指定する | #if($hogeNullObj)hoge#end |
条件の反転はJavaと同様に!を付与する | #if(!$hogeObj)hoge#end |
オブジェクトの値の比較は必ずnullチェックしてから行う | #if($hogeNullObj && $hogeNullObj == 1)hoge#end |
foreach文ではオブジェクトがnullの場合もnullチェックは必要ない | #foreach($hogeObj in $hogeNullObj)$hogeObj#end |
マクロを使うときはマクロ側にサイレント記法を指定する | $!esc.html($hogeNullObj) |
検証
オブジェクト参照
記述 | 表示 | 説明 |
---|---|---|
$hogeObj | sample.Hoge@441371 | |
$hogeObj.strVal | hoge | |
$hogeObj.strBlankVal | ||
$hogeObj.strNullVal | $hogeObj.strNullVal | オブジェクトがnullの場合は記述がそのまま出てしまう |
$!hogeObj.strNullVal | オブジェクトを表示するときは必ずサイレント記法を使う | |
$hogeObj.hogeObj | sample.Hoge@441371 | |
$hogeObj.hogeNullObj | $hogeObj.hogeNullObj | オブジェクトがnullの場合は記述がそのまま出てしまう |
$!hogeObj.hogeNullObj | オブジェクトを表示するときは必ずサイレント記法を使う | |
$hogeObj.fugaEnum | FOO | |
$hogeObj.fugaEnum.id | 1 | |
$hogeObj.fugaEnum.val | FOOVAL | |
$hogeObj.fugaNullEnum | $hogeObj.fugaNullEnum | オブジェクトがnullの場合は記述がそのまま出てしまう |
$!hogeObj.fugaNullEnum | オブジェクトを表示するときは必ずサイレント記法を使う | |
$hogeNullObj | $hogeNullObj | オブジェクトがnullの場合は記述がそのまま出てしまう |
$!hogeNullObj | オブジェクトを表示するときは必ずサイレント記法を使う |
IF文
記述 | 表示 | 説明 |
---|---|---|
#if($hogeObj)hoge#end | hoge | オブジェクトのnull判断はオブジェクトをそのまま指定する |
#if($hogeNullObj)hoge#end | ||
#if(!$hogeObj)hoge#end | 条件の反転はJavaと同様に!を付与する | |
#if(!$hogeNullObj)hoge#end | hoge | |
#if($!hogeNullObj)hoge#end | if文中にサイレント記法を指定しても意味はない | |
#if($hogeNullObj == 1)hoge#end | nullのオブジェクトで値の比較を行うとエラーログが出てしまう | |
#if($!hogeNullObj == 1)hoge#end | ||
#if($hogeNullObj && $hogeNullObj == 1)hoge#end | オブジェクトの値の比較は必ずnullチェックしてから行う |
FOREACH文
記述 | 表示 | 説明 |
---|---|---|
#foreach($hogeObj in $hogeObjArray)$hogeObj#end | sample.Hoge@611b5c sample.Hoge@14b3950 |
|
#foreach($hogeObj in $hogeNullObj)$hogeObj#end | オブジェクトがnullの場合もnullチェックは必要ない |
マクロ呼び出し
記述 | 表示 | 説明 |
---|---|---|
$esc.html($hogeObj) | sample.Hoge@441371 | |
$esc.html($hogeNullObj) | $esc.html($hogeNullObj) | オブジェクトがnullの場合は記述がそのまま出てしまう |
$esc.html($!hogeNullObj) | $esc.html($!hogeNullObj) | 同上 |
$!esc.html($hogeNullObj) | マクロを使うときはマクロ側にサイレント記法を指定する | |
$!esc.html($!hogeNullObj) | マクロを使うときはオブジェクト側のサイレント記法は不要 |