[英]Grails 2.5.0 - constraint be blank OR follow validation
I want to do something like: 我想做类似的事情:
class MyCommand {
String name
String data
static constraints = {
name blank: false, size: 3..64
data (blank: true) || (blank: false, size: 3..64)
}
}
where data is either blank or follows validation such as a size constraint if it is not blank. 其中的数据为空或如果不为空则遵循验证(例如大小限制)。 Is this possible to do without custom validation?
如果没有自定义验证,是否可以这样做?
It would be non-trivial to use other constraints within a validator constraint. 在验证程序约束中使用其他约束将是不平凡的。 The delegate of the constraints closure is a ConstrainedPropertyBuilder , which you can read to understand the complexity.
约束闭包的委托是ConstrainedPropertyBuilder ,您可以阅读该书以了解其复杂性。
But that doesn't matter because the EmailConstraint uses Apache's EmailValidator , which you can use in your validator. 但这没关系,因为EmailConstraint使用Apache的EmailValidator ,您可以在验证器中使用它。 Here's the EmailValidator in action:
这是实际使用的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')
You can use EmailValidator in your own validator like this: 您可以在自己的验证器中使用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 }
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.