# 校验
Orm模型与Validation库紧密集成,该库提供了异常类net.jkcode.jkmvc.validator.ValidateException
,来帮助您快速处理基本CRUD操作的验证错误。
验证规则是定义在OrmMeta::rules
属性中。 这个属性包含多个字段的规则,每个规则都是由Validation.execute(exp:String, value:Any, binds:Map<String, Any?>)
来执行。
每个规则是net.jkcode.jkmvc.orm.RuleValidator
对象,它有2个属性:
label
:字段中文名rule
:验证表达式, 可包含多个, 用空格分割
有两种方法来定义规则
1.重写OrmMeta :: rules
属性
public override val rules: MutableMap<String, IValidator> = hashMapOf(
"userId" to RuleValidator("用户", "notEmpty"),
"age" to RuleValidator( "年龄", "digit() between(1,120)")
)
- 调用
OrmMeta::addRule(field: String, label:String, rule: String?)
方法来添加单个规则
// 添加标签 + 规则
addRule("name", "姓名", "notEmpty");
addRule("age", "年龄", "digit() between(1,120)");
Jkmvc通过Orm.validate()
方法执行验证。
它会遍历OrmMeta::rules
中的每个字段的规则,并使用Validation.execute(exp:String, value:Any, binds:Map<String, Any?>)
方法来对字段值执行规则
该方法有3个实际参数:
exp
: 字段规则value
: 字段值binds
: 其他字段的值
当调用Orm.validate()
/Orm::save()
/Orm::update()
方法时,模型都会自动调用Orm.validate()
来验证自己的数据。 因此当发现模型的数据无效时,会抛出校验异常net.jkcode.jkmvc.validator.ValidateException
。
public fun create()
{
try
{
val user = UserModel()
user.username = 'invalid username';
user.save();
}
catch (e: ValidateException)
{
// 处理校验异常
}
}