在Config.groovy中我看到了这个:
// set per-environment serverURL stem for creating absolute links environments { production { grails.serverURL = "http://www.changeme.com" } }
在运行时访问它的正确方法是什么?
在最新版本的Grails中,不推荐使用ConfigurationHolder.
相反,您应该使用grailsApplication对象.
grailsApplication.config.grails.serverURL
如果在Controller或Service中,则使用grailsApplication对象的依赖注入.例如
class MyController{ def grailsApplication def myAction() { grailsApplication.config.grails.serverURL }
请参阅如何在Grails 2.0中访问Grails配置?
丹布走在正确的轨道上.但是,如果您进行更好的导入,生活会变得更容易:
import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH println CH.config.grails.serverURL
这里是:
import org.codehaus.groovy.grails.commons.ConfigurationHolder println ConfigurationHolder.config.grails.serverURL
或者,在控制器和标签中,显然这将起作用:
grailsApplication.config.grails.serverURL
我在BootStrap中需要它,所以选项1是我需要的.
正如一些评论中所提到的,另一个选项是grails.utils.Holders
在Grails 2.0中添加的类.我更喜欢这种方法,因为您可以在未配置依赖注入的类中使用它.
import grails.util.Holders class Foo { def bar() { println(Holders.config.grails.serverURL) } }