【发布时间】:2015-12-08 18:11:27
【问题描述】:
我的应用程序使用 Play-2.4.2/Scala-2.11.6 我使用 PlayForms+HTML+Bootstrap 自定义 用户注册模块的视图。
表单验证是服务器端验证,我使用 ScalaCustomValidation 来执行此操作。 https://www.playframework.com/documentation/2.4.x/ScalaCustomValidations
以下是播放文档提供的 ScalaCustomValidation 示例。
val allNumbers = """\d*""".r
val allLetters = """[A-Za-z]*""".r
val passwordCheckConstraint: Constraint[String] = Constraint("constraints.passwordcheck")({
plainText =>
val errors = plainText match {
case allNumbers() => Seq(ValidationError("Password is all numbers"))
case allLetters() => Seq(ValidationError("Password is all letters"))
case _ => Nil
}
if (errors.isEmpty) {
Valid
} else {
Invalid(errors)
}
})
现在可以在用户表单上调用此验证,如下所示
val userFormConstraintsAdHoc = Form(
mapping(
"username" -> nonEmptyText,
"password" -> nonEmptyText(minLength = 12).verifying(passwordCheckConstraint),
"confirmpassword" -> nonEmptyText(minLength = 12).verifying(passwordCheckConstraint)
)(UserData.apply)(UserData.unapply)
)
这可以正常工作并验证密码和确认密码字段的强度约束。 现在我需要定义一个约束来验证 password 和 confirmPassword 是否相等。
有人可以帮助我编写这种特定类型的约束,它实际上读取相同表单的两个(或多个)字段的值并对这些字段的值执行一些验证
注意:我不想在案例类级别添加约束,我只想在字段级别添加它
【问题讨论】:
标签: scala playframework