2008-10-13 4 views
36

Config.groovy में मैं इस देखें:रनटाइम पर मेरे Grails Config.groovy में उपहारों को मैं कैसे प्राप्त करूं?

// set per-environment serverURL stem for creating absolute links 
environments { 
    production { 
     grails.serverURL = "http://www.changeme.com" 
    } 
} 

क्या कार्यावधि में उपयोग करने के लिए है कि सही तरीका क्या है?

उत्तर

31

डैनब सही रास्ते पर है।

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

बहुत अच्छा .. मैं उस सुविधा से पूरी तरह से अनजान था, जिसे मैं आयात एलियासिंग कहूंगा। – danb

+12

2.0 और बाद वाले वर्शन कॉन्फ़िगरहोल्डर (और अन्य धारकों) को हटा दिया गया है। इसके बजाय आपको निर्भरता इंजेक्शन का उपयोग करना चाहिए। – khylo

+0

के नीचे मेरा उत्तर देखें क्या होल्डर कक्षाओं के बिना कक्षाओं में कॉन्फ़िगरेशन तक पहुंचने का कोई अन्य तरीका है क्योंकि निर्भरता इंजेक्शन संभव नहीं है? –

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 -ग्राइल्स -2-0 –

74

ConfigurationHolder पदावनत किया गया है grails के नवीनतम संस्करण में: हालांकि, जीवन अपनी उंगलियों पर थोड़ा आसान अगर आप एक अच्छे आयात करना हो जाता है।

इसके बजाय आपको grails आवेदन वस्तु का उपयोग करना चाहिए।

grailsApplication.config.grails.serverURL 

यदि नियंत्रक या सेवा में तो grails अनुप्रयोग वस्तु पर निर्भरता इंजेक्शन का उपयोग करें। उदा।

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

देखें How to access Grails configuration in Grails 2.0?

+1

अच्छा पकड़, कॉन्फ़िगरेशनहोल्डर को "क्रियाएं" के रूप में बंद करने के रूप में Grials 2.0 में बहिष्कृत किया गया है :)। http://grails.org/doc/2.0.x/guide/introduction.html#webFeatures – Tomo

+2

@khylo 'grails.util.Holders' ऑब्जेक्ट का उपयोग करने की संभावना भी नहीं है, जिसे Grails 2.0 के बाद लागू किया गया है और 'Config.groovy' फ़ाइल में पढ़ने की पहुंच प्राप्त करने के लिए' Holders.config' का उपयोग करें? – herom

+0

हाँ .. यह सच है। मुझे उस वर्ग के बारे में पता नहीं था – khylo

10

टिप्पणी के कुछ ही में उल्लेख किया है, एक और विकल्प grails.utils.Holders वर्ग जो Grails 2.0 में जोड़ा गया है। मैं इस दृष्टिकोण को पसंद करता हूं क्योंकि आप इसे कक्षाओं में उपयोग कर सकते हैं जो निर्भरता इंजेक्शन के साथ कॉन्फ़िगर नहीं हैं।

import grails.util.Holders 

class Foo { 
    def bar() { 
     println(Holders.config.grails.serverURL) 
    } 
} 
संबंधित मुद्दे