2008-10-13 4 views

Antwort

31

danb ist auf dem richtigen Weg. Allerdings wird das Leben ein bisschen leichter an den Fingern, wenn Sie ein schöneres Import tun:

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

sehr schön .. ich war mir völlig dieser Funktion nicht bewusst, die ich als Import-Aliasing bezeichnen würde. – danb

+12

In Grails 2.0 und höher sind ConfigurationHolder (und andere Halter) veraltet. Stattdessen sollten Sie die Abhängigkeitsinjektion verwenden. Siehe meine Antwort unter – khylo

+0

Gibt es eine andere Möglichkeit, auf die Konfiguration in Util-Klassen ohne Holder-Klassen zuzugreifen, da dort keine Abhängigkeitsinjektion möglich ist? –

14

hier ist sie:

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

alternativ in Steuerungen und Tags, offenbar wird diese Arbeit:

grailsApplication.config.grails.serverURL 

Ich brauchte es in BootStrap, so Option 1 war das, was ich brauchte.

+0

Dieser Beitrag erklärt es noch möglich sein sollte Option 2 (nicht veraltet Ansatz) in Bootstrap zu verwenden: http://stackoverflow.com/questions/7133580/how-to-access-grails-configuration-in -grails-2-0 –

74

In neueren Versionen von Grails ConfigurationHolder ist veraltet.

Stattdessen sollten Sie das grailsApplication-Objekt verwenden.

Wenn in einem Controller oder Service dann Abhängigkeit Injektion von grailsApplication Objekt. z.B.

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

Siehe How to access Grails configuration in Grails 2.0?

+1

Netter Haken, ConfigurationHolder ist in Grials 2.0 genauso veraltet wie Closures als "Aktionen" :). http://grails.org/doc/2.0.x/guide/introduction.html#webFeatures – Tomo

+2

@khylo Gibt es nicht auch die Möglichkeit, das 'grails.util.Holders' Objekt zu verwenden, das seit Grails 2.0 und Verwenden Sie "Holders.config", um Lesezugriff auf die Datei "Config.groovy" zu erhalten? – herom

+0

Ja .. das stimmt. Ich wusste nichts über diese Klasse – khylo

10

Wie in einigen der Kommentare erwähnt, eine weitere Option, die grails.utils.Holders Klasse ist, die in Grails 2.0 hinzugefügt wurde. Ich bevorzuge diesen Ansatz, da Sie ihn in Klassen verwenden können, die nicht mit der Abhängigkeitsinjektion konfiguriert sind.

import grails.util.Holders 

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