2008-10-13 14 views

Odpowiedz

31

danb jest na dobrej drodze. Jednak życie staje się nieco łatwiejsze, jeśli zrobisz ładniejszy import:

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

bardzo ładne .. byłem zupełnie nieświadomy tej funkcji, którą nazwałbym aliasowaniem importu. – danb

+12

W grach 2.0 i nowszych ConfigurationHolder (i inne posiadacze) są przestarzałe. Zamiast tego powinieneś użyć iniekcji zależności. Zobacz moją odpowiedź poniżej – khylo

+0

Czy istnieje inny sposób dostępu do konfiguracji w klasach Util bez klas Holder, ponieważ zastrzyk zależności nie jest możliwe? –

14

tutaj jest:

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

alternatywnie, w kontrolerach i znaczników, najwyraźniej to będzie działać:

grailsApplication.config.grails.serverURL 

Potrzebowałam go w Bootstrap, więc opcja 1 było to, czego potrzebowałem.

+0

Ten post wyjaśnia powinny być nadal możliwe użycie opcji 2 (non-przestarzałe podejście) w bootstrap: http://stackoverflow.com/questions/7133580/how-to-access-grails-configuration-in -grails-2-0 –

74

W nowszych wersjach grails ConfigurationHolder został uznany za przestarzały.

Zamiast tego należy użyć obiektu grailsApplication.

grailsApplication.config.grails.serverURL 

Jeśli w kontrolerze lub usłudze używasz wtrysku zależności od obiektu grails. np.

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

Zobacz How to access Grails configuration in Grails 2.0?

+1

Ładne catch, ConfigurationHolder jest przestarzałe w Grials 2.0 takie same jak zamknięcia jako "akcje" :). http://grails.org/doc/2.0.x/guide/introduction.html#webFeatures – Tomo

+2

@khylo Nie ma również możliwości użycia obiektu 'grails.util.Holders', który jest implementowany od czasów Grails 2.0 i użyć 'Holders.config', aby uzyskać dostęp do odczytu do pliku' Config.groovy'? – herom

+0

Tak, to prawda. Nie wiedziałem o tej klasie – khylo

10

Jak wspomniano w kilku komentarzach, innym rozwiązaniem jest klasa grails.utils.Holders który został dodany w Grails 2.0. Preferuję to podejście, ponieważ można go używać w klasach, które nie są skonfigurowane z wtyczką zależności.

import grails.util.Holders 

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