grails - 没有此类属性:尝试访问配置时为getFlatConfig

标签 grails

因此,在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/

相关文章:

Grails 动态脚手架与 hasMany : is it a bug or am I misconfiguring?

grails - 无法在我的Ubuntu计算机上从GVM安装Grails; gvm安装grails不起作用

grails - 在Grails中显示Spring Security类的属性

grails - Grails中的Set属性方法无法全局更改实例

grails - 如何访问(Grails插件)<RichUI:treeview>标签中的node.depth属性?

tomcat - 无法在 Tomcat : MalformedParameterizedTypeException on 'pluginManager' 中部署 Grails 应用程序

grails - 使用grails-gradle-plugin的Grails应用程序在运行应用程序时获得PermGen空间错误

grails - 测试 grails Controller 抛出 java.NullPointerException

selenium - 点击带有soapui和 Selenium 的按钮

grails - 可以从(链接的)下游插件预先配置Grails插件吗?