コントローラからテンプレートへ値を渡したいときは、render
メソッドの引数として変数を渡す方法がサンプルで良く使われている。
String name = "太郎";
String address = "東京都";
int age = 18;
render(name, address, age);
2~3個程度であればrender
メソッドの引数として渡す方法が簡単で記述的にもすっきり書ける。
こうして渡された変数は、テンプレート内で ${name}
, ${address}
といった形で、引数に指定した変数名で参照することができる。シンプルで分かりやすい。
私は${name}です。${address}に住んでいます。
ただし、引数はローカル変数でなくてはならないという制約がある。
詳しくは調べていないがテンプレートから参照する際の変数名をスタックを解析して得ているためだろう。
もしローカル変数以外の変数やオブジェクトをテンプレートに渡したいときは、renderArgs
オブジェクトを使用する。
もちろんローカル変数でもrenderArgs
により定義できるので、パラメータが多いときでもスッキリ記述できる。
renderArgs.put("name", "太郎");
renderArgs.put("address", "東京都");
render();
ちょうどMapオブジェクトのような使用感。
@Before
などでインターセプトしたときにも有効なので、複数のページで必ず設定しなくてはならないような変数を設定する時に使える。
(例:メニュー項目やページタイトルなど)