groovy:如何访问属性文件?

我有一个Groovy应用程序,我想以编程方式访问message.properties中定义的属性。

作为一个testing,我已经尝试了以下内容:

println "capacity.created " + ${message.properties['capacity.created']} 

但它不起作用(引发exception)。

任何帮助是受欢迎的

路易斯

为了读取Groovy中的属性文件,您可以使用实用程序类ConfigSlurper并使用GPathexpression式访问包含的属性。 但是,您必须知道, ConfigSlurper不支持标准的Java属性文件。 通常情况下, ConfigSlurper将被用来读取类似于属性文件的.groovy文件,但是遵循标准的groovy符号,因此string在引号内,注释以//开始,或者在/* */块内。 因此,要读取Java属性文件,您需要创build一个java.util.Properties对象并使用它创build一个ConfigSlurper

 def props = new Properties() new File("message.properties").withInputStream { stream -> props.load(stream) } // accessing the property from Properties object using Groovy's map notation println "capacity.created=" + props["capacity.created"] def config = new ConfigSlurper().parse(props) // accessing the property from ConfigSlurper object using GPath expression println "capacity.created=" + config.capacity.created 

如果您只使用Groovy代码中的属性文件,则应该直接使用Groovy符号变体。

 def config = new ConfigSlurper().parse(new File("message.groovy").toURL()) 

这也给你比标准的属性文件,例如,而不是一些很好的优势

 capacity.created="x" capacity.modified="y" 

你可以写

 capacity { created="x" modified="y" } 

我发现了一种直接访问消息属性的方法,不需要重新读取所有的消息属性文件(message_de.properties,message_fr.properties等),这是非常容易的。

 message(code:"capacity.created") 

它的工作原理!

路易斯

阅读i18n的message.properties不是一个好习惯。 您可以使用:

 message(code:"capacity.created") 

在@Luixvbuild议或控制器中

 messageSource.getMessage("capacity.created", [].toArray(), "Capacity Created.", null) 

在注入bean messageSource之后的其他spring / grails bean中。