Валидация

Xitrum включает плагин jQuery Validation для выполнения валидации на стороне клиента и предоставляет наоборот утильных методов на серверной стороне.

Стандартные валидаторы

Xitrum предоставляет набор валидаторов из пакета xitrum.validator. Интерфейс валидатора:

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

В случае если проверка не проходит, message возвращает Some(error message), а exception выбрасывает xitrum.exception.InvalidInput(error message).

Вы можете использовать валидаторы везде где захотите.

Пример контроллера:

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)

    // дальнейшая обработка валидных title и body
  }
}

Если вы не используете блок try и catch, когда валидация не проходит, Xitrum автоматически обработает исключение и отправит сообщение клиенту. Это удобно при написании API и когда у вас уже есть проверка на клиенте.

Пример модели:

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.