因此,在groovy.config文件中为我的应用程序设置了几个值。
设置如下:
environments {
development {
grails.logging.jul.usebridge = true
reslist = ['1400x1200','1200x1024','1024x800','800x600']
resdef = '1024x800'
mapregs = ['World', 'Europe', 'Asia', 'South America','Central America', 'Pacific','Africa']
mapdef = 'World'
然后我尝试在 Controller 中访问它们
if ( params.mapreq == null) {
mapreq = grailsApplication.config.grails.mapdef
} else {
mapreq = params.mapreq
}
似乎可行(有点),我得到了一些返回,但看起来像是格式的对象指针
groovy.util.ConfigObject@3764a904
试图将其更改为getFlatConfig
if ( params.mapreq == null) {
mapreq = grailsApplication.getFlatConfig.grails.mapdef
} else {
mapreq = params.mapreq
}
此时,我得到一个“没有这样的属性:尝试访问配置时为getFlatConfig”
有什么建议吗?
此外,相同的解决方案是否可以用于获取列表(如mapregs一样)?
最佳答案
grailsApplication.config.grails.mapdef
应该是grailsApplication.config.mapdef
,因为mapdef
位于配置的顶层(在该环境块内)。由于grails.mapdef
下没有存储任何内容,因此该值将是新的ConfigObject
。这就是config.a.b.c.d=1
起作用的原因-每当您访问不存在的新级别时,Groovy都会自动创建一个新的ConfigObject
来保存所设置的值,但是如果要获取而不是进行设置,最终只会得到一个空实例。
第二个不起作用,因为getFlatConfig
应该是getFlatConfig()
或flatConfig
。但是您不能在平面配置中使用ConfigObject
样式的点,因为它是扁平的。如果mapdef
实际上在grails
下,那么您将以grailsApplication.flatConfig.'grails.mapdef'
或grailsApplication.flatConfig['grails.mapdef']
对其进行访问。但是,与其他方法不同,您可以使用grailsApplication.flatConfig.mapdef
。
关于grails - 没有此类属性:尝试访问配置时为getFlatConfig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26176908/