Pregunta

en Config.groovy veo esto:

// set per-environment serverURL stem for creating absolute links
environments {
    production {
        grails.serverURL = "http://www.changeme.com"
    }
}

¿Cuál es la forma correcta de acceder a eso en tiempo de ejecución?

¿Fue útil?

Solución

danb está en el camino correcto. Sin embargo, la vida se vuelve un poco más fácil si haces una importación más agradable:

import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH
println CH.config.grails.serverURL

Otros consejos

En versiones más recientes de grails ConfigurationHolder ha quedado en desuso.

En su lugar, debe usar el objeto grailsApplication.

grailsApplication.config.grails.serverURL

Si está en un controlador o servicio, use la inyección de dependencia del objeto grailsApplication. por ejemplo,

class MyController{
    def grailsApplication
    def myAction() {
        grailsApplication.config.grails.serverURL
    }

Consulte ¿Cómo acceder a la configuración de Grails en Grails 2.0?

aquí está:

import org.codehaus.groovy.grails.commons.ConfigurationHolder
println ConfigurationHolder.config.grails.serverURL

alternativamente, en controladores y etiquetas, aparentemente esto funcionará:

grailsApplication.config.grails.serverURL

Lo necesitaba en BootStrap, por lo que la opción 1 era lo que necesitaba.

Como se menciona en algunos de los comentarios, otra opción es grails.utils .Holders clase que se agregó en Grails 2.0. Prefiero este enfoque ya que puede usarlo en clases que no están configuradas con inyección de dependencia.

import grails.util.Holders

class Foo {
    def bar() {
        println(Holders.config.grails.serverURL)
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top