Groovy Grails アプリケーションがあり、messages.properties で定義されたプロパティにプログラムでアクセスしたいと考えています。
テストとして、次のステートメントを試しました。
println "capacity.created: ${messages.properties['capacity.created']}"
しかし、それは機能しません (例外がスローされます)。
どのような助けでも歓迎します。
ルイス
ベストアンサー1
Groovyでプロパティファイルを読み取るには、ユーティリティクラスを使用できます。設定スラーパー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"
}