使用变量访问Grails Holders中的配置

时间:2014-05-25 21:24:02

标签: grails groovy

使用Grails 2.3.7,我在配置文件中设置了一个属性:

foo.bar = ['whatever']

我可以使用Holders ...

进行访问
Holders.config.foo.bar    

为方便起见,我将Holders放在util方法中:

static getCfgProp(key){
  Holders.config.get(key)
}

但是getCfgProp('foo.bar')不起作用(猜测是因为foo.bar是嵌套的地图键)。

如果我压扁配置,它会起作用:

static getCfgProp(key){
  Holders.getFlatConfig().get(key)
}

..但每次调用方法时都不想这样做。

试过这些,没有用,我必须遗漏一些简单的

Holders.config."${key}"
Holders.config."$key"
Holders.config.getProperty(key)
Holders.config.(key)

2 个答案:

答案 0 :(得分:1)

这是我用于显示配置变量值(通过表单输入):

grailsApplication.config.flatten()."${it}"

其中${it}是输入字符串。由于flatten()方法,这适用于非嵌套和嵌套键。

编辑:刚刚意识到这是你Holders.getFlatConfig()的等值,所以可能没用。不知道为什么你

  每次调用方法时都不想这样做

性能?你有基准吗?

答案 1 :(得分:0)

这对我使用 grails-2.5.6 很有效:

Holders.config[key].subkey.subsubkey...
Holders.config[key][subkey].subsubkey...

// for Holders.config.foo.bar.zet
Holders.config['foo'].bar.zet
Holders.config['foo']['bar'].zet
Holders.config['foo']['bar']['zet']