Grails 2.5.0-约束必须为空或遵循验证

Grails 2.5.0-约束必须为空或遵循验证,grails,command-objects,Grails,Command Objects,我想做一些类似的事情: class MyCommand { String name String data static constraints = { name blank: false, size: 3..64 data (blank: true) || (blank: false, size: 3..64) } } 其中,数据为空或遵循验证,如大小约束(如果不是空的话)。这是否可以在没有自定义验证的情况下实现?

我想做一些类似的事情:

class MyCommand {
     String name
     String data

     static constraints = {
         name blank: false, size: 3..64
         data (blank: true) || (blank: false, size: 3..64)
     }
}

其中,数据为空或遵循验证,如大小约束(如果不是空的话)。这是否可以在没有自定义验证的情况下实现?

在验证器约束中使用其他约束是非常重要的。约束闭包的委托是一个,您可以通过阅读来理解其复杂性

但这并不重要,因为使用Apache,您可以在验证器中使用Apache。下面是正在运行的EmailValidator:

@Grab('commons-validator:commons-validator:1.4.1')

import org.apache.commons.validator.routines.EmailValidator

def emailValidator = EmailValidator.getInstance();

assert emailValidator.isValid('what.a.shame@us.elections.gov')
assert !emailValidator.isValid('an_invalid_emai_address')
您可以在自己的系统中使用EmailValidator,如下所示:

import org.apache.commons.validator.routines.EmailValidator

class MyCommand {
     String name
     String data

     static constraints = {
         name blank: false, size: 3..64
         data validator: {
             if(it) {
                 EmailValidator
                     .getInstance()
                     .isValid(it)
             } else { true }
         }
     }
}

在验证器约束中使用其他约束是非常重要的。约束闭包的委托是一个,您可以通过阅读来理解其复杂性

但这并不重要,因为使用Apache,您可以在验证器中使用Apache。下面是正在运行的EmailValidator:

@Grab('commons-validator:commons-validator:1.4.1')

import org.apache.commons.validator.routines.EmailValidator

def emailValidator = EmailValidator.getInstance();

assert emailValidator.isValid('what.a.shame@us.elections.gov')
assert !emailValidator.isValid('an_invalid_emai_address')
您可以在自己的系统中使用EmailValidator,如下所示:

import org.apache.commons.validator.routines.EmailValidator

class MyCommand {
     String name
     String data

     static constraints = {
         name blank: false, size: 3..64
         data validator: {
             if(it) {
                 EmailValidator
                     .getInstance()
                     .isValid(it)
             } else { true }
         }
     }
}

不,没有自定义验证例程是不可能的。有没有办法在自定义验证中通过常规grails电子邮件验证运行“数据”的?没有自定义验证例程是不可能的。有没有办法在自定义验证中通过常规grails电子邮件验证运行“数据”的?