4

playframework 2 の Java コントローラーがオプションのパラメーターを scala ページに渡すことは可能ですか?

さまざまなアクションからレンダリングしているスカラページがあります。特定のケースでのみ、これらのアクションの 1 つがパラメーターを scala に渡すことになっていますが、すべてのレンダリング呼び出しを変更する必要がありますか? 基本的に私は2つの方法でtemplate.scala.htmlを呼び出したい

template.render(msg) //java

template.render()//java

私のテンプレートのどこにこれがあります: @(msg:String = "xyz")

現在、views.html.template に () を適用できないというメッセージ (java.lang.String) をレンダリングしないというメッセージのない呼び出しでエラーが発生します。

4

2 に答える 2

9

回避策として、パラメータをContext.argsマップに保存できます。これMap<String,Object>は、現在のリクエストに必要なものをすべて保存できるようにするためです。

これは、値をパラメーターとして宣言/渡すことなく、テンプレートで値にアクセスできるようにする簡単な方法です。

コントローラ

public static Result someAction()
{
  ctx().args.put("msg", "Hello world!");

  return ok(myview.render());
}

テンプレート

@if(ctx.args.containsKey("msg")){
  <p>@ctx.args.get("msg")</p>
}
于 2013-09-03T19:43:05.090 に答える