2008-10-13 1 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

В графе 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 

Я нуждался в Bootstrap, поэтому вариант 1 было то, что мне было нужно.

+0

Это сообщение объясняет, что следует по-прежнему можно использовать вариант 2 (не рекомендуется) подход в Bootstrap: http://stackoverflow.com/questions/7133580/how-to-access-grails-configuration-in -grails-2-0 – 2012-11-26 12:23:54

74

В более поздних версиях Грааль 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

Как уже упоминалось в нескольких из комментариев, другой вариант является grails.utils.Holders класс, который был добавлен в Grails 2.0. Я предпочитаю этот подход, так как вы можете использовать его в классах, которые не настроены с помощью инъекции зависимостей.

import grails.util.Holders 

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