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

时间:2015-08-19 17:50:04

标签: 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)
     }
}

其中数据为空白或在验证之后,如果不是空白,则为大小约束。这可能没有自定义验证吗?

1 个答案:

答案 0 :(得分:4)

在验证器约束中使用其他约束是非常重要的。约束闭包的委托是ConstrainedPropertyBuilder,您可以阅读它以了解复杂性。

但这并不重要,因为EmailConstraint使用了Apache EmailValidator,您可以在验证程序中使用它。这是运行中的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')

您可以在自己的validator中使用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 }
         }
     }
}