【发布时间】:2012-11-18 20:23:17
【问题描述】:
我的“文件夹”外部变量无法正常工作。我总是得到 [:]。
我正在 Windows 下的 Grails 上进行开发(这就是为什么外部配置文件看起来像 file: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
【问题讨论】:
-
如果将位置更改为 C:\Users\myUser\.grails\myApp-config.groovy 会发生什么?
-
同理。
Locations: [file:C:\Users\myUser\.grails\myApp-config.groovy]Folder: [:] -
只是为了检查 Grails 是否加载了您的配置文件,您可以在
myApp-config.groovy中添加println,这样我们就可以查看文件是否已加载。 -
是的,println 正在控制台上显示我输入的消息。
-
好的,我知道什么不起作用,但我不知道为什么。我在 myApp-config.groovy
stats.feed.wsdl.folder = "/stats"stats.feed.wsdl.folder.events = "${stats.feed.wsdl.folder}/events"stats.feed.wsdl.folder.teams = "${stats.feed.wsdl.folder}/teams"。我在每行之间使用println,我看到只执行第一行。尝试设置stats.feed.wsdl.folder.events时执行停止。谢谢塞尔吉奥!