我在src / groovy下有一个文件,我有一些属性在我的Config.groovy和外部属性文件中。通常,如果需要访问属性,则可以使用grailsApplication .configuration.property.name表达式。我希望能够从src / groovy目录下的此文件访问所有这些属性。到目前为止我尝试了什么
import grails.util.Holders
class ForkedTomcatCustomizer {
def application
void customize(Tomcat tomcat) {
println Holders.grailsApplication.config.property.name
}
}
给了我NPE说grailsAppliction为null
import org.codehaus.groovy.grails.web.context.ServletContextHolder as SCH
import org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes as GA
class ForkedTomcatCustomizer {
def application
void customize(Tomcat tomcat) {
def ctx = SCH.servletContext.getAttribute(GA.APPLICATION_CONTEXT)
def grailsAppliction = ctx.grailsApplication.getObject()
println grailsAppliction.config.property.name
}
}
相同 - NPE因为grailsAppliction为null
有可能以某种方式处理这种情况吗?谢谢!
答案 0 :(得分:0)
使用以下内容查看是否有效
println Holders.config.property.name
使用Holders时不需要grailsApplication。
答案 1 :(得分:0)
以下示例可能比您需要的更复杂,但它们展示了如何在构建时获取配置属性。我使用它们来合并两个配置文件,但您可能不需要这样做。
此method在CompileEnd事件中调用here时返回config属性。
您可以在app的_Events.groovy文件中定义一个类似的方法,该文件调用您自己的配置持有者类。
答案 2 :(得分:0)
import org.codehaus.groovy.grails.commons.ConfigurationHolder;
class KeyAndSecret{
public static String consumerKey = ConfigurationHolder.config.consumerKey;
public static String consumerSecret = ConfigurationHolder.config.consumerSecret;
}
试试这个