when variable then script functions example groovy properties

variable - groovy: ¿Cómo acceder al archivo de propiedades?



main groovy (3)

Tengo una aplicación Groovy y quiero acceder programáticamente a una propiedad definida en message.properties.

Como prueba, he intentado lo siguiente:

println "capacity.created " + ${message.properties[''capacity.created'']}

Pero no funciona (arroja una excepción).

Cualquier ayuda es bienvenida

Luis


Encontré una manera de acceder a las propiedades de los mensajes directamente sin volver a leer todos los archivos de propiedades de los mensajes (message_de.properties, message_fr.properties, etc.). Es muy fácil.

message(code:"capacity.created")

¡y funciona!

Luis


No es una buena práctica leer message.properties para i18n. Puedes usar:

message(code:"capacity.created")

en controladores como @Luixv sugirió o

messageSource.getMessage("capacity.created", [].toArray(), "Capacity Created.", null)

en cualquier otro bean spring / grial después de inyectar el bean messageSource .


Para leer los archivos de propiedades en Groovy puede usar la clase de utilidad ConfigSlurper y acceder a las propiedades contenidas usando expresiones GPath. Sin embargo, debe tener en cuenta que ConfigSlurper no admite archivos de propiedades estándar de Java. Normalmente ConfigSlurper se usará para leer archivos .groovy que pueden ser similares a un archivo de propiedades, pero se adhieren a la notación groovy estándar, por lo tanto, las cadenas son comillas internas y los comentarios comienzan con // o están dentro de un /* */ bloque. Por lo tanto, para leer un archivo de propiedades de Java, necesita crear un objeto java.util.Properties y usarlo para crear 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 solo usa el archivo de propiedad desde el código de Groovy, debe usar la variante de notación Groovy directamente.

def config = new ConfigSlurper().parse(new File("message.groovy").toURL())

Esto también le brinda algunas buenas ventajas sobre los archivos de propiedad estándar, por ejemplo, en lugar de

capacity.created="x" capacity.modified="y"

puedes escribir

capacity { created="x" modified="y" }