Play Framework - 删除空表单条目

时间:2015-04-12 15:21:47

标签: jquery forms playframework playframework-2.3

我玩了! 2.3从请求绑定的表单对象。 Form对象基本上如下所示:

val languagesForm = Form(
    mapping(
      "languages" -> list(text)
    )(apply)(unapply)
)

我有一些jQuery代码在我的HTML表单中添加了一个新的languages[1],但总会有一个空输入提交给哪个Play!包括作为条目。如何删除这些空条目?

1 个答案:

答案 0 :(得分:0)

在将控制器方法传递给表单之前,需要过滤控制器方法中的所有已发布值。结果代码如下所示:

def removeEmptyEntries(map: Map[String, Seq[String]]): Map[String, Seq[String]] = {
    map.filter(_._1.nonEmpty).map { case (a, b) =>
      (a, b.filter(_.nonEmpty))
    }.filter(_._2.nonEmpty)
  }

然后,在你的控制器内你会这样:

def post = Action(parse.urlFormEncoded) { implicit request =>
    languagesForm.bindFromRequest(removeEmptyEntries(request.body))

    ...
}

map上的第一个过滤器可能是多余的,但我添加它以防万一。按原样使用此代码,它应该可以正常工作。我正在使用Scala 2.11