如何在Play Framework中获取表单数据

时间:2013-08-27 15:41:36

标签: java playframework playframework-2.0

在提出这个问题之前我找到了这个简洁的帖子(但没有解决我的问题):

我正在尝试使用play框架作为后端使用ajax调用更新记录。

以下是有关我的请求的一些数据:

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

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

enter image description here

以下是我尝试测试服务器端的内容:

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

这是我在日志中得到的:

[info] application - PK IS null

我如何从FormData获取这些参数?我从firebug获得了有关我的请求的数据

3 个答案:

答案 0 :(得分:15)

POST数据在request().body()的控制器中可用。

在正文上,您可以致电.asFormUrlEncoded()来检索Map数据。您可以在documentation

中找到更多信息

对于更复杂的用例,您可以使用Form API来定义数据约束和验证,并将数据直接绑定到特定的类。

答案 1 :(得分:1)

改编自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替换为您的域名有意义的内容。

答案 2 :(得分:0)

您可以获取文件:

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

以身体部位为例:

var tracktitle = ""
        request.body.dataParts.get("tracktitle").get.foreach(value => tracktitle = value)