Ответ 1
Я нашел способ доступа к свойствам сообщений напрямую, не перечитывая все файлы свойств сообщений (message_de.properties, message_fr.properties и т.д.) Это очень легко.
message(code:"capacity.created")
и он работает!
Луис
У меня есть приложение Groovy, и я хочу программно перейти к свойству определенные в message.properties.
В качестве теста я пробовал следующее:
println "capacity.created " + ${message.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 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.properties
для i18n. Вы можете использовать:
message(code:"capacity.created")
в контроллерах по предложению @Luixv или
messageSource.getMessage("capacity.created",
[].toArray(), "Capacity Created.", null)
в любом другом spring/grails bean после инъекции bean messageSource
.