我创建了一个自定义约束(大多数代码从NullableConstraint
复制(,我想在我的项目中使用它。
如何注册此新约束,以便可以在域类和命令对象中使用它?我试过遵循这个答案,但没有用。我也尝试从这里复制代码,但这也不起作用。
在 Config.groovy 中添加以下内容:
grails.gorm.default.constraints = {
validMobilePhone(validator: { value, obj, errors ->
if (!value) return
value = PhoneNumberUtils.sanitizeNumber(value)
if (!PhoneNumberUtils.validateMobilePhone(value)) {
errors.rejectValue('mobilePhone', "invalid")
}
})
nonNegative(min: new BigDecimal(0))
}
然后在您的域中使用此约束:
static constraints = {
value shared: 'nonNegative'
}
我在Grails 3项目中设置了一些自定义约束类,并将它们带到Grails 4中。
在我的应用程序类中,我将自定义约束注册到 2 个约束注册表。 应用程序类上有几种方法可以选择来实现这一点。 我不知道我的选择是否是最好的。
void doWithDynamicMethods(){
//for domains
applicationContext.getBean(
org.grails.datastore.mapping.validation.ValidatorRegistry
).addConstraintFactory( someConstraintFactory )
//for command objects
(
(DefaultConstraintEvaluator)
applicationContext.getBean(
org.grails.datastore.gorm.validation.constraints.eval.ConstraintsEvaluator
)
).constraintRegistry.addConstraintFactory( someConstraintFactory )
}