備忘録‎ > ‎

[playframework]アクションチェーンで引数を渡す

2013/06/18 0:41 に ly copins が投稿
playframeworkでは別のアクションメソッドを実行するだけでRedirectレスポンスを送ることができる。
このとき、アクションメソッドで明示的に定義されている引数以外のパラメータを引き継ぐことはできるのか?
リダイレクトの仕組み上、POSTデータを渡すことはできない。
新しいURLを渡す際にGETメソッドでデータをくっつけて渡すことはできる。
 
Action.method(String A, String B) のようなメソッド定義であれば、
Action.method(A,B); と書くだけで、AとBを渡すためのURLへリダイレクトされる。
 
AとBのほかにCもパラメータとして渡したければ、
redirect("Action.method", A, B, C); のようにリダイレクトメソッドを用いる。
render() と同じく ローカル変数名がパラメータ名として使用される。
 
いちいちローカル変数を定義するのが煩わしいのであれば、mapオブジェクトとRouter.reverse() を使う方法もある。
Map<String, Object> args = new HashMap<String, Object>();
args.put("A", "hello");
args.put("B", "playframework");
args.put("C", "1.2.5");
redirect(Router.reverse("Action.method", args).url);
 
 
Comments