Grails外部配置。无法访问外部变量。始终保持[:] [英] Grails External Configuration. Can't access to external variable. Getting always [:]

查看:97
本文介绍了Grails外部配置。无法访问外部变量。始终保持[:]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法使用我的'文件夹'外部变量。



我在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外部配置。无法访问外部变量。始终保持[:]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆