コントローラからテンプレートへ値を渡したいときは、renderメソッドの引数として変数を渡す方法がサンプルで良く使われている。 2~3個程度であればrenderメソッドの引数として渡す方法が簡単で記述的にもすっきり書ける。 ただし、引数はローカル変数でなくてはならない。詳しくは調べていないがテンプレートから参照する際の変数名をスタックを解析して得ているためと思われる。
String address = "東京都"; Boolean canRead = false; render(name, address, canRead); こうして渡された変数は、テンプレート内で ${name}, ${address} といった形で、引数に指定した変数名で参照することができる。
<p>私はJavaを読むことが#{if canRead}できます。#{/if}#{else}できません。#{/else} </p> renderArgsメソッドを使うと、変数一つ一つを個別に定義できる。 renderメソッドの引数として列挙しなくてよいため、数が多いときにすっきり書くことができる。 @Beforeなどでインターセプトしたときにも有効なので、複数のページで必ず設定しなくてはならないような変数を設定する時に使える。(例:メニュー項目) また、テンプレート内での参照名も同時に指定するため、ローカル変数に限らないという利点もある。
renderArgs("address", "東京都"); renderArgs("canRead", false); render(); |
playframework1 > template >