36

在 Config.groovy 我看到这个:

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

在运行时访问它的正确方法是什么?

4

4 回答 4

75

在更新的 grails 版本中,ConfigurationHolder 已被弃用。

相反,您应该使用 grailsApplication 对象。

grailsApplication.config.grails.serverURL

如果在 Controller 或 Service 中,则使用 grailsApplication 对象的依赖注入。例如

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

请参阅如何在 Grails 2.0 中访问 Grails 配置?

于 2012-05-15T09:30:17.653 回答
31

danb 在正确的轨道上。但是,如果您进行更好的导入,您的生活会变得轻松一些:

import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH
println CH.config.grails.serverURL
于 2008-10-13T18:31:18.643 回答
14

这里是:

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

或者,在控制器和标签中,显然这将起作用:

grailsApplication.config.grails.serverURL

我在 BootStrap 中需要它,所以我需要选项 1。

于 2008-10-13T18:09:26.693 回答
10

正如一些评论中提到的,另一个选项是grails.utils.Holders在 Grails 2.0 中添加的类。我更喜欢这种方法,因为您可以在未配置依赖注入的类中使用它。

import grails.util.Holders

class Foo {
    def bar() {
        println(Holders.config.grails.serverURL)
    }
}
于 2014-07-16T19:59:15.507 回答