2011-03-23 34 views
4

我正在使用Grails 1.2.1。我如何訪問我的grailsApplication.config變量?我有這個類...如何從groovy類訪問grailsApplication.config?

public class Utility { 
    def grailsApplication 
... 
    public static boolean isAuthorizedHost(String hostIpAddr) { 
     // Simple validation 
     if (hostIpAddr == null || hostIpAddr.length() == 0) 
      return false; 
     // 
     def allowedDomains = grailsApplication.config.proxy.allowedDomains 

,但我得到這個編譯錯誤......

[groovyc] /Users/davea/Documents/workspace-sts-2.6.0.SR1/socialmediaproxy/src/groovy/com/nna/tool/proxy/Utility/Utility.groovy: 26: Apparent variable 'grailsApplication' was found in a static scope but doesn't refer to a local variable, static field or class. Possible causes: 
    [groovyc] You attempted to reference a variable in the binding or an instance variable from a static context. 
    [groovyc] You misspelled a classname or statically imported field. Please check the spelling. 
    [groovyc] You attempted to use a method 'grailsApplication' but left out brackets in a place not allowed by the grammar. 
    [groovyc] @ line 26, column 24. 
    [groovyc]   def allowedDomains = grailsApplication.config.proxy.allowedDomains 

感謝您的任何意見, - 戴夫

回答

14

grailsApplication實例的自動注射僅在您的Spring管理的bean中可用(在resource.groovy中聲明的Grails artefact和bean)。

從其他類讀取配置值,你可以用這個方法:

def config = org.codehaus.groovy.grails.commons.ConfigurationHolder.config 
def allowedDomains = config.proxy.allowedDomains 
4
import grails.util.Holders 

def grailsApplication = Holders.grailsApplication 

對方回答折舊。 (在Grails 2.5.0上進行了答案測試)