2008-10-13 1 views

Répondre

31

danb est sur la bonne voie. Cependant, la vie devient un peu plus facile sur vos doigts si vous faites une agréable importation:

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

très gentil .. j'étais complètement inconscient de cette fonctionnalité, que j'appellerai l'alias d'importation. – danb

+12

Dans Grails 2.0 et supérieur ConfigurationHolder (et autres supports) ont été obsolètes. Au lieu de cela, vous devriez utiliser l'injection de dépendance. Voir ma réponse ci-dessous – khylo

+0

Existe-t-il un autre moyen d'accéder à la configuration dans les classes Util sans classes Holder car l'injection de dépendance n'est pas possible? –

14

voici:

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

alternativement, dans les contrôleurs et les étiquettes, apparemment, cela fonctionnera:

grailsApplication.config.grails.serverURL 

j'avais besoin dans BootStrap, donc l'option 1 était ce que je avais besoin.

+0

Ce message explique qu'il devrait être encore possible d'utiliser l'option 2 (approche non dépréciée) dans Bootstrap: http://stackoverflow.com/questions/7133580/how-to-access-grails-configuration-in -grails-2-0 –

74

Dans les versions les plus récentes de Grails ConfigurationHolder a été désapprouvée. A la place, vous devriez utiliser l'objet grailsApplication. Si vous utilisez un contrôleur ou un service, utilisez l'injection de dépendances de l'objet grailsApplication dans un contrôleur ou un service. par exemple.

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

Voir How to access Grails configuration in Grails 2.0?

+1

Belle prise, ConfigurationHolder est obsolète dans Grials 2.0 même que les fermetures comme "actions" :). http://grails.org/doc/2.0.x/guide/introduction.html#webFeatures – Tomo

+2

@khylo N'y a-t-il pas aussi la possiblité d'utiliser l'objet 'grails.util.Holders', qui est implémenté depuis Grails 2.0 et utiliser 'Holders.config' pour obtenir un accès en lecture au fichier' Config.groovy'? – herom

+0

Oui .. c'est vrai. .Je ne savais pas à propos de cette classe – khylo

10

Comme mentionné dans quelques-unes des commentaires, une autre option est la classe grails.utils.Holders qui a été ajouté à Grails 2.0. Je préfère cette approche car vous pouvez l'utiliser dans des classes qui ne sont pas configurées avec l'injection de dépendance.

import grails.util.Holders 

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