Scala Play framework 2.0:使用属性值创建验证错误消息

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

使用scalaforms作为play框架,假设我有如下形式:

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),但我想更改它的错误消息,我该怎么做?