我有一个Groovy应用程序,我想以编程方式访问在message.properties中定义的属性 。groovy:如何访问属性文件?
作为一个测试,我试过如下:
println "capacity.created " + ${message.properties['capacity.created']}
但它不工作(抛出异常)。
欢迎任何帮助
路易斯
我有一个Groovy应用程序,我想以编程方式访问在message.properties中定义的属性 。groovy:如何访问属性文件?
作为一个测试,我试过如下:
println "capacity.created " + ${message.properties['capacity.created']}
但它不工作(抛出异常)。
欢迎任何帮助
路易斯
我找到了一种方法来访问邮件属性直接wothout重新读取所有 消息属性文件(message_de.properties,message_fr.properties等。 ) 这是非常容易的。
message(code:"capacity.created")
它的工作原理!
路易斯
用于读取Groovy的属性文件,您可以使用实用工具类ConfigSlurper和访问使用GPATH表达式包含的属性。但是,您必须知道ConfigSlurper
不支持标准Java属性文件。通常,ConfigSlurper
将用于读取可能类似于属性文件的.groovy文件,但遵循标准的常规符号,因此字符串位于引号内,注释以//
开始或位于/* */
块内。因此,读取Java属性文件,你需要创建一个java.util.Properties
对象,并用它来创建一个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,message_es,message_fr等。除此之外,所有的消息已经被系统读取。如果我能避免这种情况,我不会再阅读它们。 – Luixv 2010-01-14 14:28:36
很好的答案。谢谢 – Gervase 2012-08-16 14:26:53
只是从类路径加载通知使用'properties.load(getClass()。getClassLoader()。getResourceAsStream(“message。()“))' – banterCZ 2014-01-31 07:38:09
这不是阅读message.properties
为国际化的最佳实践。您可以使用:
message(code:"capacity.created")
在控制器作为@Luixv建议或注射豆messageSource
后
messageSource.getMessage("capacity.created",
[].toArray(), "Capacity Created.", null)
任何其他春天
/Grails的豆。
我有一个单独的类,它不是一个控制器,我试过了,它不工作...任何建议? – 2014-09-30 14:57:24
@CPU100将'messageSource'注入该类,并使用' getMessage'方法 – 2015-05-21 07:39:52
这适用于我必须通过标题的动态值: –
Xplora
2016-01-21 22:07:08