2014-10-03 40 views
0

所以在groovy.config文件中为我的应用程序设置了一些值。没有这样的属性:getFlatConfig当试图访问配置

它们设置如下:

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 
} 

看来工作(实物),我得到的东西回来,但看起来像一个对象指针的格式 [email protected]

试图改变它getFlatConfig

if (params.mapreq == null) { 
    mapreq = grailsApplication.getFlatConfig.grails.mapdef 
} else { 
    mapreq = params.mapreq 
} 

在这一点,我得到一个“没有这样的属性:getFlatConfig试图访问配置时,”所以不是

有什么建议? 此外,同样的解决方案是否可以用于获取列表(如mapregs)?

回答

2

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

+0

窍门非常感谢。 – vrghost 2014-10-04 11:50:30

相关问题