Play Framework - 删除空的表单条目

Play Framework - Remove empty form entries

我有戏! 2.3 从请求绑定的表单对象。 Form 对象基本上是这样的:

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

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

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

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