LoginSignup
1
0

More than 5 years have passed since last update.

PlayFrameworkで独自のValidationを定義する

Last updated at Posted at 2017-10-09

PlayFrameworkにはデフォルトでValidationの制約が用意されています。
play.api.data.validation.Constraintsがそれに当たります。

しかし、上記に定義されていない制約を用いてValidationを行いたい場合は自身で作成する必要があります。
Play公式に作成方法が書いてあります。
【Play公式】独自Validationの作り方

ポイントはValid, InValidの使い方で
ValidならOK
InValidならNGになります。

また、InValidの場合は使用するエラーメッセージを指定してください。

下のコードが独自Validationのコードになります。
Constraint型を使用して、電話番号に対して制約を定義しています。

CustomValidation.scala
val TelRegex = """^\d{10}$|^\d{11}$""".r

val telConstraint: Constraint[String] = Constraint("constraint.tel") { tel =>
  if (tel == null) Valid
  else if (tel.trim.isEmpty) Valid
  else {
    val matchResult = TelRegex.findFirstMatchIn(tel.replace("-", ""))
    matchResult match {
      case None => Invalid(ValidationError("error.tel.parttern"))
      case Some(result) => Valid
    }
  }
}

使い方はPlayで用意されているのと同じで、verifyingメソッドの引数に作成した制約を与えてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0