3

fillAndValidate在表单上使用时,我无法识别一些奇怪的行为。这是我能想到的最简单的用例来隔离问题:

object Application extends Controller {

  case class SimpleForm(val field: String)

  val form = Form(
    mapping(
      "field" -> text.verifying("message", (s: String) => false)
    )(SimpleForm.apply)(SimpleForm.unapply))

  def index = Action { implicit request =>
    println("bindFromRequest: " + form.bindFromRequest.errors)
    println("fillAndValidate: " + form.fillAndValidate(SimpleForm("value")).errors)

    Ok
  }
}

当使用 query 请求索引页面时?field=value,我在控制台上得到以下信息:

bindFromRequest: List(FormError(field,message,WrappedArray()))
fillAndValidate: List(FormError(field,message,WrappedArray()))

据我所知,这是预期的行为。

但是,在使用全局错误时,例如直接验证映射:

val form = Form(
  mapping(
    "field" -> text
  )(SimpleForm.apply)(SimpleForm.unapply)
  .verifying("message", (s: SimpleForm) => false))

我得到的行为非常令人惊讶:

bindFromRequest: List(FormError(,message,WrappedArray()))
fillAndValidate: List()

为什么fillAndValidate忽略错误?有没有办法解决这个问题?

4

0 回答 0