Velocityのリファレンスについて

AipoのViewに変更を加えるときによく見かける”$!record.Id”のような文字列。 これについて調べました。

$~~という文字列は三種類のリファレンスを表します。 変数、プロパティ、メソッドです。

変数

変数を参照する場合、変数の値をテンプレートのset指示子かJavaのコードから取得します 例えば、$Idが値0508を持っていればテンプレート上の全ての$Idは0508です。 set指示子を用いれば

#set($Id = 0508)

この文以降の$Idはすべて0508になります。

プロパティ

表記の方法としては $hoge.hoge1のように識別子をドットでつなぐ形になっています。 このリファレンスでは2つの意味が読み取れます 一つはhogeで識別されるhashtableからキーhoge1で関連付けられる値を取得する。 もう一つはメソッドを参照している場合です。 これは$hoge.gethoge1()の省略した形としても見れます。この場合はJavaのクラスから取得したデータを得ます。 これはどちらの意味が正しいか判断して処理を実行してくれます

メソッド

上のプロパティの省略した形をきちんと書くとメソッドになります。 一般にプロパティで書いたほうが好まれるそうです。

なかなか作業が捗らず、この辺がもう少しスラスラ理解できるといいなぁと思う限りです。