【问题标题】:Grails External Configuration. Can't access to external variable. Getting always [:]Grails 外部配置。无法访问外部变量。总是得到 [:]
【发布时间】: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 时执行停止。谢谢塞尔吉奥!

标签: grails groovy config


【解决方案1】:

您创建一个属性并将其声明为字符串:

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"

【讨论】:

  • 奥布里加多塞尔吉奥!你是最棒的!
猜你喜欢
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
相关资源
最近更新 更多