Как получить доступ к свойству, определенному в messages.properties файле?

У меня есть приложение Grails Groovy, и я хочу получить доступ программно к свойству, определенному в messages.properties.

Как тест, я попробовал следующее утверждение:

println "capacity.created: ${messages.properties['capacity.created']}"

Но это не работает (выдает исключение).

Любая справка одобрена.

Luis

35
задан Tung 14 March 2019 в 16:18
поделиться

2 ответа

Я нашел способ доступа к свойствам сообщений напрямую WOTHOUT RE-REATE все Файлы свойств сообщений (message_de.properties, message_fr.properties и т. Д.) Это очень легко.

message(code:"capacity.created")

И это работает!

Луис

8
ответ дан 27 November 2019 в 06:49
поделиться

Для чтения файлов свойств в 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"
}
70
ответ дан 27 November 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: