问题描述
我无法使用我的'文件夹'外部变量。
我在Windows下的Grails上开发(这就是为什么外部配置文件看起来像文件:C:\\ \\path\to /文件)。
我在另一个项目中使用外部配置时没有问题,就像我在下面显示的那样。
我有这个:
$ b
Config.groovy:
environments {
development {
grails.config.locations = [file:$ {userHome} /。 grails / $ {appName} -config.groovy]
}
}
myApp-config.groovy: $ b
stats.feed.wsdl .folder ='/ static'
控制器和服务:
class WsdlController {
def wsdlService
def index = {
wsdlService .getEventsSchedule()
}
}
class WsdlService {
def grailsApplication
def getEventsSchedule = {
println位置:$ {grailsApplication.config.grails.config.locations}
println文件夹:$ {grailsApplication.config.stats.feed.wsdl.folder}
}
}
控制台:
位置:[file:C:\ Users \ myUser / .grails / myApp-config.groovy]
文件夹:[: ]
任何线索?
谢谢!
已更新!
这是整个myApp-config.groovy:
println'开始'
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'
这不起作用,控制台显示:
开始
1
但是如果我更改变量名称,它的工作原理。
$ b
println'开始'
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'
$ b控制台:
开始
1
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
I can't have my 'folder' external variable working. Always I'm getting [:].
I'm developing on Grails under Windows (this is why the external configuration file looks like file:C:\path\to/file).
I'm using external configuration in another project without problems, in the same way that I'm showing below.
I have this:
Config.groovy:
environments { development { grails.config.locations = [ "file:${userHome}/.grails/${appName}-config.groovy" ] } }
myApp-config.groovy:
stats.feed.wsdl.folder = '/static'
Controller and Service:
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}" } }
Console:
Locations: [file:C:\Users\myUser/.grails/myApp-config.groovy] Folder: [:]
Any clue?
Thanks!
Updated!
This is the whole 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'
This is not working, the console shows:
Start 1
But if I change the variable names, it works.
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'
Console:
Start 1 2 End
解决方案You create a property and declared this as a string:
stats.feed.wsdl.folder = "/stats"
In that way you isnt't able to add subproperties. So, to keep something close to what you want, you can do this:
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"
这篇关于Grails外部配置。无法访问外部变量。始终保持[:]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!