Валидация ========= 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 `_.