Scala Play framework 2.0:使用属性值创建验证错误消息
使用scalaforms作为play框架,假设我有如下形式:Scala Play framework 2.0:使用属性值创建验证错误消息,scala,playframework,validation,Scala,Playframework,Validation,使用scalaforms作为play框架,假设我有如下形式: case class User(name: String, emails: List[String]) val userForm = Form( mapping( "name" -> text, "emails" -> list(text).verifying("Emails are duplicated",x => SomeFunctionThatHandlesDuplic
case class User(name: String, emails: List[String])
val userForm = Form(
mapping(
"name" -> text,
"emails" -> list(text).verifying("Emails are duplicated",x => SomeFunctionThatHandlesDuplicateEmails(x))
)(User.apply, User.unapply)
)
其中somefunctionthatdhandlessduplicatemail
是一个函数,如果表单中接收到的任何电子邮件已经存在于数据库中,则返回false(从而使字段无效)
现在,我的问题是:
是否有方法使用已验证字段的值来创建错误消息?我想告诉用户哪些电子邮件是重复的,而不仅仅是告诉他们如上所示的“电子邮件是重复的”。验证()需要一系列步骤
您可以看到实现的约束示例
请注意,每个中的验证函数都接收要验证的值,例如下面重复的“min”约束中的“o”:
def min(minValue: Int): Constraint[Int] = Constraint[Int]("constraint.min", minValue) { o =>
if (o >= minValue) Valid else Invalid(ValidationError("error.min", minValue))
}
这很容易做到:
def min(minValue: Int): Constraint[Int] = Constraint[Int]("constraint.min", minValue) { o =>
if (o >= minValue) Valid else Invalid(ValidationError("error.min", minValue, o))
}
这将使错误消息格式化程序可以使用“o”作为{1}(minValue为{0})。谢谢!这当然是我所需要的。我想使用标准约束(nonEmptyText),但我想更改它的错误消息,我该怎么做?