现在的位置: 首页 > 综合 > 正文

Grails的领域类验证-constraints

2012年09月03日 ⁄ 综合 ⁄ 共 3088字 ⁄ 字号 评论关闭
Grails的领域类验证(约束属性),也就是domain类的`constraints`闭包,用作各个字段的验证校验,Grails共提供了16个输入校验和一个自定义校验。

`constraints`

[blank](#gblank)...........空

[creditCard](#creditCard)......信用卡格式

[email](#email)...........email格式

[inList](#inList)..........指定范围

[matches](#matches).........正则限制

[max](#max).............最大值(实现Comparable接口的类型)

[maxSize](#maxSize).........集合的最大值

[min](#min).............最小值(实现Comparable接口的类型)

[minSize](#minSize).........集合的最小值

[notEqual](#notEqual)........排除(不能与设定的值相同)

[nullable](#nullable)........是否为空

[range](#range)...........限定范围

[scale](#scale)...........小数位数

[size](#size)............限定集合或字符串长度

[unique](#unique)..........唯一性

[url](#url).............URL格式

[validator](#validator).......自定义验证


##__1. blank__
* __作用__:
定义一个字段是否能够为空
* __用法__:

class User {
static constraints = {
name(blank:false)
email(blank: true)
age(blank: false)
}
String name
String email
Integer age
}


##__2. creditCard__
* __作用__:
验证是否为有效的信用卡账号
* __用法__:

class User {
static constraints = {
cardNumber(creditCard: true)
}
String cardNumber
}


##__3. email__
* __作用__:
验证是否为有效的邮箱帐号
* __用法__:

class User {
static constraints = {
email(email: true)
}

String email
}


##__4. inList__
* __作用__:
验证是否是指定的数组中的选项,在页面的显示为Drop-down box,选项为`inList`中指定的value
* __用法__:

class User {
static constraints = {
list(inList: ['aaa','bbb','ccc'])
}

String list
}


##__5. matches__
* __作用__:
验证一个字符串是否符合某个正则表达式
* __用法__:

class User {
static constraints = {
name(matches:"[a-zA-Z]+")
}

String name
}


##__6. max__
* __作用__:
设定一个实现了`java.lang.Comparable`接口的类行做为自己的最大值类型,同时,该类型必须也是自身的类型
* __用法__:

class User {
static constraints = {
age(max:100)
date(max:new Date())
}

Integer age
Date date
}


##__7. maxSize__
* __作用__:
设置一个集合或者字段的最大值
* __用法__:

class User {
static constraints = {
people(maxSize:100)
}

Integer people
}


##__8. min__
* __作用__:
功能和`max`相反,设置和`max`一样
* __用法__:

class User {
static constraints = {
age(min:18)
date(min:new Date())
}

Integer age
Date date
}


##__9. minSize__
* __作用__:
功能和`maxSize`相反,设置和`maxSize`一样
* __用法__:

class User {
static constraints = {
people(minSize:10)
}

Integer people
}


##__10. notEqual__
* __作用__:
验证输入的用户名不能和指定的用户名一致
* __用法__:

class User {
static constraints = {
name(notEqual: "zhangsan")
}

String name
}


##__11. nullable__
* __作用__:
验证是否可以为`null`,注意`空`和`null`的区别
* __用法__:

class User {
static constraints = {
name(nullable: false)
}

String name
}


##__12. range__
* __作用__:
设置一个字段的范围
* __用法__:

class User {
static constraints = {
age(range:18..100)
}

Integer age
}


##__13. scale__
* __作用__:
版本0.4才开始出现的约束属性。
根据设定的scale数值,自动把浮点型数字小数点后的位数调整为设定的值。
适用于以下数值类型:`java.lang.Float`, `Java.lang.Double`, `Java.math.BigDecimal` (及其子类)。
* __用法__:

class User {
static constraints = {
price(scale: 2)
}

Double price
}


##__14. size__
* __作用__:
规定一个数值,集合或者字符串长度的大小。
在版本0.5中不被建议用在数字类型的属性上,改用`range`。
如果`blank`设为`true`或者`nullable`设为`true`,不能使用这个约束属性。
* __用法__:

class User {
static constraints = {
name(size:5..10)
}

String name
}


##__15. unique__
* __作用__:
设置属性是否必须为唯一
* __用法__:

class User {
static constraints = {
name(unique: true)
}

String name
}


##__16. url__
* __作用__:
如果属性为一个URL地址,则设为`true`。
* __用法__:

class User {
static constraints = {
url(url: true)
}

String url
}


##__17. validator__
* __作用__:
在闭包里设定自定义的验证
* __用法__:

class User {
static constraints = {
repassword(validator: {val, obj ->
if (obj.password != val) {
return "Repassword is not right"
}
})
}

String password
String repassword
}

合理使用`constraints`后,生成的脚手架会自动进行验证
验证信息的内容,在`i18n`目录下,可以找到相应的语言进行更改,别忘使用java的`native2ascii`编码工具转换成相应编码格式

抱歉!评论已关闭.