11

この質問をする前に、このきちんとした投稿を見つけました(しかし、私の問題は解決しません):

Play フレームワークをバックエンドとして使用して ajax 呼び出しでレコードを更新しようとしています。

ここに私の要求に関するいくつかのデータがあります:

Request URL:http://172.20.12.50:9000/updateName
Request Method:PUT

Form Data
name=&value=Testttt&pk=367

ここに画像の説明を入力

サーバー側で取得したものをテストする方法は次のとおりです。

Logger.info("PK IS " + request().getQueryString("pk"));

これは私がログに記録するものです:

[info] application - PK IS null

これらのパラメーターを FormData から取得するにはどうすればよいですか? firebug からのリクエストに関するこのデータを取得しました

4

3 に答える 3

15

POST データは、コントローラで使用できますrequest().body()

本体では、 を呼び出してデータ.asFormUrlEncoded()を取得できMapます。詳細については、ドキュメントを参照してください。

より複雑な使用例では、フォーム APIを使用してデータの制約と検証を定義し、データを特定のクラスに直接バインドできます。

于 2013-08-27T16:11:12.420 に答える
2

http://www.playframework.com/documentation/2.0/ScalaFormsから適応

import play.api.data._
import play.api.data.Forms._

case class MyFormData(name: Option[String], value: String, pk: Long)

val myForm = Form(
    mapping(
        "name" -> optional(text),
        "value" -> text,
        "pk" -> number
    )(MyFormData.apply)(MyFormData.unapply)
)

myForm.bindFromRequest.fold(
    formWithErrors => // binding failure, you retrieve the form containing errors,
    value => // binding success, you get the MyFormData value 
)

明らかMyFormDataに、ドメインにとって意味のあるものに置き換えてください。

于 2013-08-27T16:22:22.340 に答える
0

ファイル用に取得できます:

val music = request.body.file("music").get

体の部分の例:

var tracktitle = ""
        request.body.dataParts.get("tracktitle").get.foreach(value => tracktitle = value)
于 2013-08-29T10:15:49.477 に答える