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编码工具转换成相应编码格式

posted on   黑暗伯爵  阅读(1876)  评论(1编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 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的设计模式综述

导航

< 2012年7月 >
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 1 2 3 4
5 6 7 8 9 10 11

统计

点击右上角即可分享
微信分享提示