2. VTL・リファレンス
2005.11.22 株式会社四次元データ 里見玲爾
- 2.1. コメント
- 2.2. 変数の出力
- 2.3. プロパティの表示
- 2.4. メソッドの実行結果の表示
前章でも説明したように、VTL(Velocity Template Language)はVelocityで使用できるテンプレート言語で、
簡単で使い勝手が良い文法になっています。
ある文書において動的に変わっていく部分には、リファレンス("$"で始まる)を使い、
VTL文の始めには"# + 指示子"を記述します。
この章では、リファレンスの表示について解説します。
2.1. コメント
VTLでのコメント表記は次のようにします。
##この一行はコメントになる。 #* コメント 改行してもコメント *#
二つ目の表記では、複数行にわたってコメントを書くことができます。
2.2. 変数の出力
変数の値の出力には4通りあり、変数に値が入らなかったときの処理に違いがあります。 変数に値が入っているときはすべてその値を表示します。
記法 | 説明 | 値がないときの処理 | |
---|---|---|---|
1 | $変数名 | これが一番単純な記法といえます。 | "$変数名"という文字列を表示 |
2 | ${変数名} | この記法が正式記法ですが、しばしば1の記法が使われます。 | "$変数名"という文字列を表示 |
3 | $!変数名 | Silent表記法と呼ばれます。 | 何も出力されない |
4 | $!{変数名} | これは2と3を組み合わせた記法です。 | 何も出力されない |
変数名はアルファベットと数字、ハイフン(-)、アンダースコア(_)で構成されます。
また最初の文字は、必ずアルファベットでなければなりません。
1と2との違いは、2の場合は変数のすぐ後にテキストを表示したいときにも使えるというところにあります。
たとえば"${verb}able"というように変数"$verb"に続けて"able"を表示させたい場合、
1の記法ではスペースをあける必要があります。スペースをあけない場合、"$verbable"と記述するために、
Velocityが"$verbable"というひとつの変数と認識してしまうからです。
ただし$verbに値がなかった場合は$verbableとなるため、
Velocityは"$verbable"という変数を出力しようとします。
$verbableに値がなければ"$verbable"という文字列となります。
2.3. プロパティの表示
プロパティの値の表示はJavaのプロパティと同等の記法で記述します。
$変数名.プロパティ名 または ${変数名.プロパティ名}
変数名、プロパティ名を構成する文字は2.2の変数名と同じです。
例 $visitor.name $goods.value など
2.4. メソッドの実行結果の表示
メソッドの表示はプロパティの表示とほぼ同じです。引数のリストを受け取ることができます。 以下のように記述すれば、メソッドを実行した結果を表示することができます。
$変数名.メソッド名(引数のリスト名) または ${変数名.メソッド名(引数のリスト名)}
この変数名、メソッド名を構成する文字も2.2の変数名と同じです。
例 $goods.getGoodsName() $visitor.getName() $book.setTitle("Velocity")
またget..やset..のようなメソッドは、省略してプロパティのように記述できます。 ただしこのように記述する場合は引数を渡せません。
例 $goods.getGoodsName() --> $goods.GoodsName ○ $visitor.getName() --> $visitor.Name ○ $book.setTitle("Velocity") --> $book.Title ×(引数を渡せないため)
次の章からは、VTLについて解説します。