Grails 2.5.0 - 约束为空或遵循验证
Grails 2.5.0 - constraint be blank OR follow validation
我想做这样的事情:
class MyCommand {
String name
String data
static constraints = {
name blank: false, size: 3..64
data (blank: true) || (blank: false, size: 3..64)
}
}
其中数据要么为空白,要么遵循大小限制等验证(如果不为空白)。这可以在没有自定义验证的情况下完成吗?
在验证器约束中使用其他约束并非易事。 constraints闭包的委托是一个ConstrainedPropertyBuilder,你可以阅读它来理解复杂性。
但这并不重要,因为 EmailConstraint uses Apache's 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 }
}
}
}
我想做这样的事情:
class MyCommand {
String name
String data
static constraints = {
name blank: false, size: 3..64
data (blank: true) || (blank: false, size: 3..64)
}
}
其中数据要么为空白,要么遵循大小限制等验证(如果不为空白)。这可以在没有自定义验证的情况下完成吗?
在验证器约束中使用其他约束并非易事。 constraints闭包的委托是一个ConstrainedPropertyBuilder,你可以阅读它来理解复杂性。
但这并不重要,因为 EmailConstraint uses Apache's 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 }
}
}
}