バリデーション

Xitrumは、クライアントサイドでのバリデーション用に jQuery Validation plugin を内包し、サーバーサイドにおけるバリデーション用のいくつかのヘルパーを提供します。

デフォルトバリデーター

xitrum.validator パッケージには以下の3つのメソッドが含まれます:

check(value): Boolean
message(name, value): Option[String]
exception(name, value)

もしバリデーション結果が false である場合、 messageSome(error, message) を返却します。 exception メソッドは xitrum.exception.InvalidInput(error message) をスローします。

バリデーターは何処ででも使用することができます。

Actionで使用する例:

import xitrum.validator.Required

@POST("articles")
class CreateArticle {
  def execute() {
    val title = param("tite")
    val body  = param("body")
    Required.exception("Title", title)
    Required.exception("Body",  body)

    // Do with the valid title and body...
  }
}

trycatch ブロックを使用しない場合において、バリデーションエラーとなると、 xitrumは自動でエラーをキャッチし、クライアントに対してエラーメッセージを送信します。 これはクライアントサイドでバリデーションを正しく書いている場合や、webAPIを作成する場合において便利なやり方と言えます。

Modelで使用する例:

import xitrum.validator.Required

case class Article(id: Int = 0, title: String = "", body: String = "") {
  def isValid           = Required.check(title)   &&     Required.check(body)
  def validationMessage = Required.message(title) orElse Required.message(body)
}

デフォルトバリデーターの一覧については xitrum.validator パッケージ を参照してください。

カスタムバリデーターの作成

xitrum.validator.Validator を継承し、 check メソッドと、 message メソッドのみ実装することでカスタムバリデーターとして使用できます。

また、 Commons Validator を使用することもできます。