我在域类中有一个自定义验证器,它引用了一个配置属性:
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但它在此实例中不起作用。还有另一种方式吗?
答案 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