我有一個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