2012-04-04 23 views
13

Scalaを使用してPlay(2.0)のコントローラアクション内でリダイレクトを行う方法を解明しようとしています。Play Framework - パラメータでリダイレクトする

だけで正常に動作し

Redirect(routes.Application.index) 
を使用してリダイレクト。

ドキュメント、API、またはGoogleから把握できないことは、コールにパラメータを追加する方法です。

私は次のように、これは簡単に行うことができるのGrailsから来ています:

リダイレクトアクション: "インデックス" は、paramsは:[ "キー": "値"] を。

私が見つけた唯一の方法は、文字列URLとクエリ文字列を使用してリダイレクトを呼び出すことです。これは扱いにくいようです。

基本的に私はRedirect(Call)を何とかしたいのですが、逆方向ルーティングを使ってCallオブジェクトを作成する方法はありません。

Play/Scalaでコンセプトが見つからない/わからないのですか?

ありがとうございました!

// Redirect to /hello/Bob 
def helloBob = Action { 
    Redirect(routes.Application.hello("Bob"))  
} 

このスニペットは

答えて

15

Ellou」

ルートは、単に機能ですあなたのコントローラーでこれのためだけに別の関数を作成します。あなたのルート設定では、単に次のようなものを追加することができます:

GET /google @controllers.Default.redirect(to = "http://google.com") 
+0

ありがとう!実際には、私は最初にこれを試しましたが、コンパイラーはあまりにも多くの議論を入力したと不平を言った。問題は、アクションがLongを取るが、私が定義したルーティングでは、アクションのデフォルト値があるはずであるということです。私はそれを取り除かなければならなかった。だから私はインデックス(なし)またはインデックス(Some(foo))のいずれかを呼び出す必要があります。 Grailsから来て、これは本当に退屈なようです。 – pchronz

+3

+1これは、型保証されたURLの内容です。私は、遊びが自分たちのものをもっと売ることを望む。 –

+1

+1のためのタイプセーフ、@DanBurton、編集のための余裕 – biesior

0

ます。また、回避することができます(一番下)http://www.playframework.org/documentation/2.0/ScalaRoutingから来ている:あなたはいつものように引数を渡すことができるように

+0

@zenith:助けてほしいと思っています –

+0

Muuuuch better! – emlai

+0

これはうまくいかないようです。私は 'そのようなファイルやディレクトリはありません' –