我想做类似的事情:
class MyCommand {
String name
String data
static constraints = {
name blank: false, size: 3..64
data (blank: true) || (blank: false, size: 3..64)
}
}
其中数据为空白或在验证之后,如果不是空白,则为大小约束。这可能没有自定义验证吗?
答案 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 }
}
}
}