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); |
備忘録 >