在域类中,我有一个来自枚举的值,表示电子邮件地址或URL
class Contact{
ContactType contact
String value
}
enum ContactType{
EMAIL,
URL
}
我正在尝试使用内置的Grails EmailConstraint和UrlConstraint类来验证:
static constraints = {
value(validator: {
ContactType.validate(obj, val, errors)
})
}
我设法通过做一些读取grails来源的假设来使它工作:
Constraint constraint = new EmailConstraint()
constraint.setPropertyName "value"
constraint.setOwningClass obj.class
constraint.setParameter true
constraint.validate(obj, obj.value, errors)
但我觉得这很难看,所以我想知道是否有人能提供更好的解决方案。
感谢。
答案 0 :(得分:0)
您可以使用http://www.grails.org/plugin/constraints为此案例实现自定义约束。新的约束类可以在内部委托给EmailConstraint,或者根据枚举值委托给一种“URLConstraint”。
使用这种方法,您的域类保持干净,验证细节会分成不同的类。