Grails的領域類驗證-constraints
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`編碼工具轉換成相應編碼格式
浙公網安備 33010602011771號