如何注册自定义约束



我创建了一个自定义约束(大多数代码从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 )
}

相关内容

  • 没有找到相关文章

最新更新