• 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`编码工具转换成相应编码格式
  • 相关阅读:
    分布式事务的四种解决方案
    十大经典排序算法
    Vineyard 加入 CNCF Sandbox,将继续瞄准云原生大数据分析领域
    因你不同,2021 阿里云开发者大会重磅开启 @ 所有开发者!
    【深度】阿里巴巴万级规模 K8s 集群全局高可用体系之美
    业界率先支持 MCP-OVER-XDS 协议,Nacos 2.0.1 + 1.4.2 Release 正式发布
    被解救的代码
    KubeVela + KEDA:为应用带来“与生俱来”的弹性伸缩能力
    论好文章和烂文章
    Fluid 进入 CNCF Sandbox,加速大数据和 AI 应用拥抱云原生
  • 原文地址:https://www.cnblogs.com/hangxin1940/p/2806458.html
Copyright © 2020-2023  润新知