groovy: comment accéder au fichier de propriétés?
j'ai une application Groovy et je veux accéder programatiquement à une propriété défini dans le message.propriété.
comme test j'ai essayé ce qui suit:
println "capacity.created " + ${message.properties['capacity.created']}
mais il ne fonctionne pas (jette une exception).
toute aide est la bienvenue
Luis
3 réponses
pour lire des fichiers de propriétés dans Groovy vous pouvez utiliser la classe d'utilité ConfigSlurper et accéder aux propriétés contenues en utilisant des expressions GPath. Cependant, vous devez être conscient que ConfigSlurper
ne supporte pas les fichiers de propriétés Java standard. Normalement, le ConfigSlurper
sera utilisé pour lire .les fichiers de groovy qui peuvent être similaires à un fichier de propriété, mais adhèrent à la notation de groovy standard, donc les chaînes sont des guillemets à l'intérieur et les commentaires commencent par //
ou sont dans un bloc /* */
. Ainsi, pour lire un fichier de propriétés Java, vous devez créer un objet java.util.Properties
et l'utiliser pour créer un 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
si vous n'utilisez le fichier de propriété que depuis le code de Groovy, vous devez utiliser la variante de notation de Groovy directement.
def config = new ConfigSlurper().parse(new File("message.groovy").toURL())
cela vous donne aussi de beaux avantages par rapport aux fichiers de propriétés standard, par exemple au lieu de
capacity.created="x"
capacity.modified="y"
vous pouvez écrire
capacity {
created="x"
modified="y"
}
j'ai trouvé un moyen d'accéder aux propriétés des messages directement sans relire tous les messages des fichiers de propriétés (message_de.propriétés, message_fr.propriétés, etc.) Il est très facile d'accès.
message(code:"capacity.created")
et ça marche!
Luis
ce n'est pas une bonne pratique de lire message.properties
pour i18n. Vous pouvez utiliser:
message(code:"capacity.created")
dans les contrôleurs comme @Luixv l'a suggéré ou
messageSource.getMessage("capacity.created",
[].toArray(), "Capacity Created.", null)
dans tout autre grain de printemps/grain après injection du grain messageSource
.