在播放2.0斯卡拉定义约束?(custom Constraint in Play 2.0-scala

2019-07-31 01:10发布

我想写一个自定义的约束使用它在我的形式进行验证。 在表格映射具有验证功能: verifying (constraints: Constraint[T]*): Mapping[T]

我可以明显地使用内置的约束,如"name" -> text.verifying(nonEmpty)

现在我需要我自己的约束,虽然。 约束的情况下类看起来像: case class Constraint [-T] (name: Option[String], args: Seq[Any], f: (T) ⇒ ValidationResult) extends Product with Serializable

但是,当我看着的ValidationResult,我只看到一个空的特点,在这里看到的- http://www.playframework.org/documentation/api/2.0.2/scala/index.html#play.api.data.validation.ValidationResult 。 那么,如何定义自己的约束?

Answer 1:

是你的问题,你不知道如何创建类型的函数T => ValidationResult ? 如果你点击了“知子类”,它有两个: Invalid (A类)和Valid (单身)。

因此,例如:

import play.api.data.validation._

val f = (_: Int) match {
  case 0 | 1 | 2 => Valid
  case _ => Invalid("Number over 2")
}

val c = Constraint("my constraint")(f)


文章来源: custom Constraint in Play 2.0-scala?