Groovy Grailsアプリケーションがあり、messages.propertiesで定義されたプロパティにプログラムでアクセスしたい。
テストとして、次のステートメントを試しました。
println "capacity.created: ${messages.properties['capacity.created']}"
ただし、機能しません(例外がスローされます)。
どんな助けも歓迎します。
ルイス
すべてのメッセージプロパティファイル(message_de.properties、message_fr.propertiesなど)を再読み込みせずに、メッセージプロパティに直接アクセスする方法を見つけました。これは非常に簡単です。
message(code:"capacity.created")
そしてそれは動作します!
ルイス
Groovyでプロパティファイルを読み取るには、ユーティリティクラス ConfigSlurper を使用し、GPath式を使用して含まれるプロパティにアクセスできます。ただし、ConfigSlurper
は標準のJavaプロパティファイルをサポートしません。通常、ConfigSlurper
は、.groovyファイルの読み取りに使用されます。プロパティファイルに似ていますが、標準の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"
}
I18nでmessage.properties
を読むことはベストプラクティスではありません。次を使用できます。
message(code:"capacity.created")
@Luixvが提案したようにコントローラーで、または
messageSource.getMessage("capacity.created",
[].toArray(), "Capacity Created.", null)
bean messageSource
を注入した後、他のSpring/Grails Beanで。