2012-04-06 50 views
0

我在指config屬性域類自定義驗證:的Grails:域類從自定義驗證消除ConfigurationHolder

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代替它,但在這種情況下它不起作用。有另一種方法嗎?

回答

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'] 
     }) 
    } 
} 
+0

這對我的作品,謝謝! – Ben 2012-04-09 22:29:00

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

+0

我猜你在這裏發現了這個:http://burtbeckwith.com/blog/?p=993 – 2012-04-07 05:28:21

+0

是的,那就是我看到它的地方。我還添加了鏈接到我的答案。謝謝。 – evanwong 2012-04-07 06:30:57

+0

謝謝。看起來,getDomainClass()對於Grails 2.0來說是新的,我忽略了我仍然在1.3.7上。 – Ben 2012-04-09 22:26:02