3

私はフレームワーク (scala) をプレイするのが初めてで、まだ最初の Web アプリケーションを使いこなしています。コントローラー index に最初のメソッドを作成しました。

 def index = UserAwareContextAction { implicit request =>
val subset = request.params.get("subset").getOrElse("all")
request.user match {
  case Some(user) => selectIndex(request, subset)
  case _ => Ok(views.html.index())
}

ここで、実際にパラメーターをインデックス リクエストに追加する方法を理解する必要があります。ナビゲーション スカラ クラスがあります。

  val index                     =   GET.on(root).to{Application.index_}

だから私はこれがどのように関連しているべきか、リクエストパラメータを宣言する場所、それを渡す方法がよくわかりませんか? play のドキュメンテーションが自分に関係がないように見える理由がわかりません。助けてください、または見つめる方法に関する便利なチュートリアルをお願いします。

4

2 に答える 2

2

少なくとも2つのアプローチがあります。

初め:

Play に URL からパラメータを解析させることができます: たとえば、user_id をインデックス ページに渡す必要がある場合、GET リクエストの URL は次のようになります。

/index/1

そしてプレイルートファイルで:

GET /index/:user_id      Controllers.Application.index(user_id : Int)

したがって、この場合、play はリクエスト URL から user_id を 1 として解析します。または、次のようにリクエストすることもできます。

/index?user_id=1そしてあなたのルートで:

GET /index      Controllers.Application.index(user_id : Int) 

user_id を 1 として解析して再生します。

2 つのケースでは、この user_id をコントローラーのパラメーターとして取得します。

def index(user_id : Int) = Action{implicit request =>
       // user_id == 1
       ......
       Ok("")
}

別:

たとえば、コントローラーのリクエストからパラメーターを直接取得するMapRequest method queryString、コントローラーは次のようになります。

 def index = Action{ request =>
 // you get your params as Map[String,Seq[String]] where `key` is you parameter `name` and value is //wraped in to a Seq 
    val params = request.queryString
     // or if you want to flatten it to Map[String,Option[String]] for example    
       val params = request.queryString.map {case(k,v) => k->v.headOption}  
       .....    
       Ok("")
        }

この場合、ルートは単に次のとおりです。GET /index Controllers.Application.index

于 2013-10-26T09:33:26.823 に答える