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