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中。