如何在不使用Play的表单模式时获取表单发布数据

时间:2015-02-17 21:54:35

标签: scala playframework

我想创建一个简单的辅助函数,它将根据发布的表单的键返回一个Option [String]。

目前我这样做:

(request.body.asFormUrlEncoded.get("key1")(0))

我想创建一个返回Option [String]的函数,如果需要,我可以将其转换为Int或Boolean。

1 个答案:

答案 0 :(得分:1)

访问(0)会冒NullPointerExceptionIndexOutOfBoundsException的风险。

如何在控制器中声明此方法:

def findKey(key:String)(implicit request:Request[AnyContent]):Option[String] = {
  request.body.asFormUrlEncoded.flatMap { form =>
    form.get(key).flatMap { values =>
      values.headOption
    }
  }
}

然后你可以在你的处理函数中使用得非常整洁:

def workWithFormFields = Action.async { implicit request =>

  val maybeKey1:Option[String] = findKey("key1")
  ...

}