自定义标准验证器的错误消息

时间:2014-05-25 13:10:08

标签: scala playframework playframework-2.2

我有一个简单的表格:

  val addForm = Form(
    tuple("email" -> email, "password" -> nonEmptyText)
      verifying("Invalid email or password", result => User.authenticate(result._1, result._2).isRight)
  )

上面的一般错误消息是可以的。但是,如何自定义电子邮件和密码的特定错误消息。现在,如果是空密码,我就会遇到这种错误:

password error.required

如何自定义此错误消息?

更新: 即使这样也行不通,因为验证消息仍然与以下内容相同:

val addForm = Form(
        tuple("email" -> email, "password" -> nonEmptyTextWithMessage("My message"))
          verifying("Invalid email or password", result => User.authenticate(result._1, result._2).isRight)
      )


def nonEmptyTextWithMessage(errorMessage: String): Mapping[String] = nonEmptyText.verifying(errorMessage, { _ => true })

2 个答案:

答案 0 :(得分:1)

nonEmptyText约束默认使用error.required作为消息密钥。您可以在conf/messages文件中更改它,但我想这不是您想要的。

如果您想重新使用预定义的Constraint(请注意nonEmptyText不是Constraint而是Mapping),您可以执行以下操作:

val addForm = Form(
  tuple(
    "email" -> email,
    "password" -> text.verifying(Constraints.nonEmpty.copy(name = Some("My message"))())
   ).verifying("Invalid email or password", result => User.authenticate(result._1, result._2).isRight)
)

它看起来不太好,但我不知道任何辅助函数会达到同样的效果。

答案 1 :(得分:1)

我的同事建议,如果您使用的是scala模板,则可以按如下方式自定义错误消息

只需添加

'_error ->addForm("password").error.map(_.withMessage("Please provide password"))

 @helper.inputPassword(addForm("password"), 'class->"col-md-12", '_label ->"Password",'style->"margin-bottom:20px", '_showConstraints->false, 'placeholder->"Enter Password", '_error ->addForm("password").error.map(_.withMessage("Please provide password")))