Skip to content

Latest commit

 

History

History
60 lines (45 loc) · 1.86 KB

validation.cn.md

File metadata and controls

60 lines (45 loc) · 1.86 KB

# 校验

Orm模型与Validation库紧密集成,该库提供了异常类net.jkcode.jkmvc.validator.ValidateException,来帮助您快速处理基本CRUD操作的验证错误。

1 定义校验规则

验证规则是定义在OrmMeta::rules属性中。 这个属性包含多个字段的规则,每个规则都是由Validation.execute(exp:String, value:Any, binds:Map<String, Any?>)来执行。

每个规则是net.jkcode.jkmvc.orm.RuleValidator对象,它有2个属性:

  1. label:字段中文名
  2. rule:验证表达式, 可包含多个, 用空格分割

有两种方法来定义规则 1.重写OrmMeta :: rules属性

public override val rules: MutableMap<String, IValidator> = hashMapOf(
	"userId" to RuleValidator("用户", "notEmpty"),
	"age" to RuleValidator( "年龄", "digit() between(1,120)")
)
  1. 调用 OrmMeta::addRule(field: String, label:String, rule: String?) 方法来添加单个规则
// 添加标签 + 规则
addRule("name", "姓名", "notEmpty");
addRule("age", "年龄", "digit() between(1,120)");

2执行验证

Jkmvc通过Orm.validate()方法执行验证。

它会遍历OrmMeta::rules中的每个字段的规则,并使用Validation.execute(exp:String, value:Any, binds:Map<String, Any?>)方法来对字段值执行规则

该方法有3个实际参数:

  1. exp: 字段规则
  2. value: 字段值
  3. binds: 其他字段的值

3自动验证

当调用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)
	{
		// 处理校验异常
	}
}