我不能让我的'文件夹'外部变量正常工作。我总是得到[:]。
我正在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 :(得分:2)
您创建一个属性并将其声明为字符串:
stats.feed.wsdl.folder = "/stats"
这样你就无法添加子属性。因此,为了保持您想要的东西,您可以这样做:
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"