【发布时间】:2016-01-31 19:04:37
【问题描述】:
我在 Play Framework 2.4 中有一个普通的play.api.data.Form。我在 Action 中进行了基本验证,但在我的情况下,即使用户提交的数据在语法上是正确的,我也可能需要根据外部服务的结果添加错误。
我从 JSON 对象中获取带有错误消息的错误字段,例如:
{
"name": [
"Invalid name"
],
"age": [
"Invalid age",
"Something else"
]
}
我可以把这个 JSON 对象转换成Seq[FormError]:
val fields: Seq[(String, JsValue)] = jsObjErrorFields.fields
val formErrors: Seq[FormError] = fields map { case(key, jsValue) =>
val messages: Seq[String] = jsValue.asOpt[Seq[String]] getOrElse Seq()
FormError(key, messages)
}
我知道Form 类的withError 方法,但它只需要一个FormError 参数:
def withError(error: FormError): Form[T] = this.copy(errors = errors :+ error, value = None)
我觉得必须有一个简单的解决方案(地图,用于...?),但我无法弄清楚。
val formWithErrors = ...
感谢您的帮助!
【问题讨论】:
标签: scala playframework playframework-2.4