【问题标题】:Validator for multiple types in grailsgrails中多种类型的验证器
【发布时间】:2010-11-28 17:00:25
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: grails constraints validation


    【解决方案1】:

    您可以使用http://www.grails.org/plugin/constraints 为这种情况实施自定义约束。新的约束类可能会在内部委托给 EmailConstraint 或一种“URLConstraint”,具体取决于枚举值。

    使用这种方法,您的域类保持简洁,验证细节被分离到不同的类中。

    【讨论】:

    • 好主意,谢谢,但约束代码仍然困扰着我。
    • 您可以将上述代码“groovyfy”为:new EmailConstraint(propertyName:'value', owningClass:obj.class, paramater: true).validate(obj, obj.value,errors)跨度>
    猜你喜欢
    • 2017-05-19
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    相关资源
    最近更新 更多