Velocityの$result.◯◯の呼び出し先

velocityファイルにしばしば${result.◯◯}のような文が出てきます。 javaコードのget◯◯のメソッドが引数を持たない場合、Velocityで呼ぶ際はgetを省略して”.〇〇”としてもよいという決まりがあります。今回はそのget〇〇メソッドをたどる方法について自分の見つけた方法をメモします。

例えばHogeScreen.javaとhoge.vmを結合させている場合、HogeScreen.java内のdoOutputメソッド内に

Piyo listData = new Piyo();
//(略)
listData.doViewList(this, rundata, context);

String layout_template = "portlets/html/hoge.vm";

setTemplate(rundata, context, layout_template);

というような文があるはずです。ここで処理を行うjavaファイルとvmファイルを関連付けています。こちらのハックによるとresultはthisと定義されているようなので、listDataにインスタンスを生成している、ここではPiyoクラスの中身を見るとget〇〇が見つかると思います。

Velocityのresult関連では他にもこちらのハックが参考になりました。 https://hacknote.jp/archives/23020/ https://hacknote.jp/archives/26026/