在表单上使用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
}
}
在使用查询?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
会忽略错误?有没有办法解决这个问题?