Създавам приставка за Grails, която ще промени стойността на следното свойство на конфигурацията:
grails.gorm.default.constraints
Проблемът е, че по времето, когато моят дескриптор на приставката започне да се изпълнява (doWithSpring), ако приложението Grails, което използва приставката, имаше съществуваща стойност за свойството ограничения по подразбиране, то вече щеше да е изпълнено.
Бих искал моята добавка да промени стойността на ограниченията по подразбиране, преди Grails да започне да го изпълнява, така че ограниченията, които добавям, също да бъдат включени. Изглежда затварянето на ограниченията по подразбиране се изпълнява многократно по време на Стартиране на приложението Grails.
Опитах няколко подхода:
- Use the platform-core plugin which this post talks about: How to configure a grails plugin from another grails plugin.
- Problem there is similar: the Grails app's default constraints block is executed at least once before the plugin's doWithConfig begins to run.
- (Hackish) Modify Grails app to include a FooConfig.groovy in its "locations", a file which exists in the plugin's grails-app/conf/ dir and thus accessible on the classpath (see below).
- Problem: Hackish, still working through it but might be my only option.
grails.config.locations = ["classpath:FooConfig.class"] // Yes, *.class
bindable
се добавя отgrails-web-databinding
плъгин, открит вgails-core
чрез AST трансформация. Не мисля, че предишният ми коментар ще бъде приложим за ограничениеbindable
. Това не еConstrainedProperty
като max, maxSize, inList и т.н. Опасявам се, че трябва да се прилага директно в класа, както е споменато в документите. - person dmahapatro   schedule 03.05.2014