2008-10-13 57 views

回答

31

danb在正确的轨道上。但是,如果您进行更好的导入,生活会变得更容易:

import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH 
println CH.config.grails.serverURL 
+0

非常好..我完全不知道这个功能,我将称之为导入别名。 – danb 2008-10-13 18:33:26

+12

在grails 2.0和更高版本中,ConfigurationHolder(和其他持有者)已被弃用。相反,你应该使用依赖注入。请参阅我的回答 – khylo 2012-05-15 09:40:03

14

那就是:

import org.codehaus.groovy.grails.commons.ConfigurationHolder 
println ConfigurationHolder.config.grails.serverURL 

另外,在控制器和标签,显然这将工作:

grailsApplication.config.grails.serverURL 

我需要它处于引导,所以选项1是我所需要的。

+0

这篇文章解释了它应该还是可以使用的引导选项2(非过时的做法):http://stackoverflow.com/questions/7133580/how-to-access-grails-configuration-in -grails-2-0 – 2012-11-26 12:23:54

74

在更新版本的Grails ConfigurationHolder中已被弃用。

相反,您应该使用grailsApplication对象。

grailsApplication.config.grails.serverURL 

如果在控制器或服务中,则使用grailsApplication对象的依赖注入。 例如

class MyController{ 
    def grailsApplication 
    def myAction() { 
     grailsApplication.config.grails.serverURL 
    } 

参见How to access Grails configuration in Grails 2.0?

10

如在几的评论所提到的,另一种选择是将其在2.0的Grails添加grails.utils.Holders类。我更喜欢这种方法,因为您可以在未配置依赖注入的类中使用它。

import grails.util.Holders 

class Foo { 
    def bar() { 
     println(Holders.config.grails.serverURL) 
    } 
}