我对输入数据进行了一些验证,我真的希望在控制器代码中处理这些数据,因为:
- 它仅适用于非常特定的情况,因此
verifying
在表单定义中使函数混乱会降低代码凝聚力。 - 它产生了我需要在控制器的其他地方使用的附带结果。
什么是一种干净的方式来产生一个新的,就像刚刚在 的分支中Form
绑定了一个额外的(字段或一般)错误消息?success
Form.fold
为了说明,我想要Form.withError
我在这里调用的(不存在的)方法:
val form= myForm.bindFromRequest
form.fold(
errors => BadRequest(view(errors))
{
case(data, button) =>
button match {
case Some("save") =>
val r= costlyFunction(data)
if (r.isOk) {
doSomethingWith(r)
Ok(...)
}
else {
val f= form.withError("my custom error")
BadRequest(view(f))
}
case ...
}
}