【发布时间】:2014-11-21 11:06:31
【问题描述】:
我一直在尝试在 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。
我的方法基于一些博客文章,例如 this one 和 constraint in Grails' github repo(但我看不到它们是如何配置的)。
我做错了什么? Grails 的自定义约束的配置最近有变化吗?
【问题讨论】: