2

検証のためにフォームで使用するカスタム制約を作成したいと考えています。フォーム内のマッピングには検証機能があります: verifying (constraints: Constraint[T]*): Mapping[T].

私は明らかに組み込みの制約を使用できます"name" -> text.verifying(nonEmpty)

今は私自身の制約が必要です。Constraint ケース クラスは次のようになります。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 . では、どうすれば独自の制約を定義できますか?

4

1 に答える 1

5

type の関数を作成する方法がわからないことが問題T => ValidationResultですか? 「既知のサブクラス」をクリックすると、(Invalidクラス) とValid(シングルトン) の 2 つがあります。

たとえば、次のようになります。

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)
于 2012-08-17T03:17:02.167 に答える