Grails:从域类中的自定义验证器中删除ConfigurationHolder

时间:2012-04-06 20:52:20

标签: grails dns validation

我在域类中有一个自定义验证器,它引用了一个配置属性:

accountExpirationDate (
    nullable:true,
    validator: { val, obj ->
        if (val > new Date() + CH.config.EXPIRATION_WINDOW_DAYS) return ['date_too_late']
    })

其中CH是org.codehaus.groovy.grails.commons.ConfigurationHolder

由于不推荐使用ConfigurationHolder,我需要摆脱它。我已尝试在其位置使用grailsApplication但它在此实例中不起作用。还有另一种方式吗?

2 个答案:

答案 0 :(得分:3)

grailsApplication添加依赖注入,然后您可以从obj实例

访问该注入
class MyDomainClass {

   def grailsApplication

   Date accountExpirationDate

   static constraints = {
      accountExpirationDate(nullable:true, validator: { val, obj ->
         def config = obj.grailsApplication.config
         if (val > new Date() + config.EXPIRATION_WINDOW_DAYS) return ['date_too_late']
      })
   }
}

答案 1 :(得分:0)

域中有一个新的getDomainClass方法。您可以尝试使用它来访问grailsApplication。

validator: { val, obj ->
    if (val > new Date() + this.getDomainClass().grailsApplication.config.EXPIRATION_WINDOW_DAYS) return ['date_too_late']
})

以下是关于该主题的更好的报道: http://burtbeckwith.com/blog/?p=993

相关问题