我一直在尝试在 Grails 项目中创建自定义约束(请参阅下面的约束代码)。
import org.codehaus.groovy.grails.validation.AbstractConstraint
import org.springframework.validation.Errors
class BuscaConstraint extends AbstractConstraint {
public static final String CONSTRAINT_NAME = "busca"
protected void processValidate(Object target, Object propertyValue, Errors errors) {
}
boolean supports(Class type) {
return type && String.class.isAssignableFrom(type);
}
String getName() {
return CONSTRAINT_NAME;
}
}
正如你所看到的,这个约束实际上并没有验证任何东西。相反,它只是在脚手架生成中自定义属性呈现的标志。创建上面的类后,我在 Config.groovy 文件中添加了以下行:
ConstrainedProperty.registerNewConstraint(BuscaConstraint.CONSTRAINT_NAME, BuscaConstraint.class)
..并将此约束添加到类的属性中:
class ThatClass {
def someProperty
static constraints = { someProperty (unique:true, busca: "nome")
}
但是,如果我尝试获取表达式的结果
ThatClass.constraints.someVariable.getAppliedConstraint("busca")
,我得到的只是null
.
我的方法基于一些博客文章(例如这篇文章)和Grails 的 github 存储库中的一个约束(但是我看不到它们是如何在那里配置的)。
我究竟做错了什么?Grails 的自定义约束的配置最近有变化吗?