所以在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'
然后我尝试在控制器中访问它们
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)?
答案 0 :(得分:2)
grailsApplication.config.grails.mapdef
应为grailsApplication.config.mapdef
,因为mapdef
位于配置的顶层(在该环境块中)。由于grails.mapdef
下没有任何内容存储,因此该值将为新的ConfigObject
。这就是为什么config.a.b.c.d=1
有效的原因 - 每次您访问一个不存在的新关卡时,Groovy会自动创建一个新的ConfigObject
来保存设置的值,但如果你&#39} ;重新获取而不是设置,最终只有空实例。
第二个不起作用,因为getFlatConfig
应该是getFlatConfig()
或flatConfig
。但是你不能在平面配置中使用ConfigObject
风格的点,因为它被展平了。如果mapdef
实际位于grails
下,则您可以grailsApplication.flatConfig.'grails.mapdef'
或grailsApplication.flatConfig['grails.mapdef']
访问它。但与其他人不一样,所以你要使用grailsApplication.flatConfig.mapdef
。