2012-11-30 104 views
3

我無法使用我的'文件夾'外部變量。總是我越來越[:]。Grails外部配置。無法訪問外部變量。始終[:]

我在Windows下開發Grails上的(這就是爲什麼外部配置文件看起來像文件:C:\ path \ to/file)

我在另一個項目中使用外部配置沒有問題,就像我在下面顯示的那樣。

我有這樣的:

Config.groovy中:

environments { 
    development { 
     grails.config.locations = [ "file:${userHome}/.grails/${appName}-config.groovy" ] 
    } 
} 

對myApp-Config.groovy中:

stats.feed.wsdl.folder = '/static' 

控制器和服務:

class WsdlController { 
    def wsdlService 
    def index = { 
     wsdlService.getEventsSchedule() 
    } 
} 

class WsdlService { 
    def grailsApplication 

    def getEventsSchedule = { 
     println "Locations: ${grailsApplication.config.grails.config.locations}" 
     println "Folder: ${grailsApplication.config.stats.feed.wsdl.folder}" 
    } 
} 

控制檯:

Locations: [file:C:\Users\myUser/.grails/myApp-config.groovy] 
Folder: [:] 

任何線索?

謝謝!

更新!

這是整個對myApp-Config.groovy中:

println 'Start' 
stats.feed.wsdl.folder = "/stats" 
println 1 
stats.feed.wsdl.folder.events = "${stats.feed.wsdl.folder}/events" 
println 2 
stats.feed.wsdl.folder.teams = "${stats.feed.wsdl.folder}/teams" 
println 'End' 

這不是工作,控制檯顯示:

Start 
1 

但是,如果我改變的變量名,它的工作原理。

println 'Start' 
stats.feed.wsdl.folder = "${playcall.static.resources.folder}/stats" 
println 1 
stats.feed.wsdl.events.folder = "${stats.feed.wsdl.folder}/events" 
println 2 
stats.feed.wsdl.teams.folder = "${stats.feed.wsdl.folder}/teams" 
println 'End' 

控制檯:

Start 
1 
2 
End 
+0

如果你改變位置爲C:\ Users \ myUser \ .grails \ myApp-config.groovy,會發生什麼? –

+0

同樣。 '地點:文件:C:\用戶\ MYUSER \ .grails \對myApp-的Config.groovy]'' 文件夾:[:]' – Agorreca

+1

只是爲了檢查是否Grails的加載,你可以把一個'println'您的配置文件'myApp-config.groovy',所以我們可以看到文件是否被加載。 –

回答

2

您創建一個屬性,並宣佈這是一個字符串:

stats.feed.wsdl.folder = "/stats" 

這樣,你就isnt't能夠添加子屬性。所以,爲了保持與你想要的東西接近,你可以這樣做:

stats.feed.wsdl.folder.base = "/stats" 
stats.feed.wsdl.folder.events = "${stats.feed.wsdl.folder.base}/events" 
stats.feed.wsdl.folder.teams = "${stats.feed.wsdl.folder.base}/teams" 
+0

ObrigadoSérgio!你是最好的! – Agorreca