2008-10-13 65 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) 
    } 
}