grails中多种类型的验证器

时间:2010-11-28 17:00:26

标签: grails constraints validation

在域类中,我有一个来自枚举的值,表示电子邮件地址或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)

但我觉得这很难看,所以我想知道是否有人能提供更好的解决方案。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用http://www.grails.org/plugin/constraints为此案例实现自定义约束。新的约束类可以在内部委托给EmailConstraint,或者根据枚举值委托给一种“URLConstraint”。

使用这种方法,您的域类保持干净,验证细节会分成不同的类。