0

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

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 代替它,但在这种情况下它不起作用。还有其他方法吗?

4

2 回答 2

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']
      })
   }
}
于 2012-04-06T21:00:49.813 回答
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

于 2012-04-06T21:04:21.660 回答