Grails - 从自定义验证器闭包调用内置约束

Posted

技术标签:

【中文标题】Grails - 从自定义验证器闭包调用内置约束【英文标题】:Grails - Calling built in constraint from custom validator closure 【发布时间】:2015-01-27 07:59:16 【问题描述】:

我希望能够基于域类的另一个字段将约束实现为可选。

这样,如果importMode为真,则不再需要公司字段,但如果导入模式为假,则调用company (blank:false)提供的默认功能。

class MyClass 
    boolean importMode
    String company

    static constraints = 
        company(validator:  val, obj ->
            if(obj.importMode) 
                // return default blank:false functionality
            
            return true // else pass
        
    

在 Grails 中是否可以像这样从自定义约束闭包调用内置约束?

【问题讨论】:

【参考方案1】:

你必须定义一个自定义约束,而不是使用默认的可空或空白约束

class MyClass 
    boolean importMode
    String company

    static constraints = 
        company(validator:  val, obj ->
            if(!obj.importMode && !val) 
              return['myClass.company.required']
            
        )
    

【讨论】:

以上是关于Grails - 从自定义验证器闭包调用内置约束的主要内容,如果未能解决你的问题,请参考以下文章

Rails:从自定义验证器调用标准验证

Grails:将自定义约束应用于域类的所有字段

升级后 Grails 验证不起作用

Grails 2.2.4:瞬态属性:为啥自定义验证器被调用两次?

日期验证的 Grails 最小约束

WCF 自定义验证器:如何从自定义验证器初始化“用户”对象