Grails的领域类验证-constraints
Grails的领域类验证(约束属性),也就是domain类的constraints
闭包,用作各个字段的验证校验,Grails共提供了16个输入校验和一个自定义校验。
constraints
blank...........空
creditCard......信用卡格式
email...........email格式
inList..........指定范围
matches.........正则限制
max.............最大值(实现Comparable接口的类型)
maxSize.........集合的最大值
min.............最小值(实现Comparable接口的类型)
minSize.........集合的最小值
notEqual........排除(不能与设定的值相同)
nullable........是否为空
range...........限定范围
scale...........小数位数
size............限定集合或字符串长度
unique..........唯一性
url.............URL格式
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
编码工具转换成相应编码格式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述