如何在resources.groovy grails 2.3中读取context-param(web.xml)值

时间:2013-11-15 14:49:49

标签: spring grails

我需要从web.xml获取context-param值以覆盖resources.groovy中的值。 Grails文档的目的只是为了使用带有属性文件的占位符,但解决方案不合适,因为将来我想使用weblogic的部署计划来覆盖不同环境的context-param。使用ServletContextPropertyPlaceholderConfigurer是不可能的,因为现在已弃用。你有解决方案吗?

谢谢

1 个答案:

答案 0 :(得分:0)

首先,将webXml插件添加到Grails项目中。这个插件增加了在战争中生成web.xml之后添加context-param的可能性。 创建YOUR-APP / grails-app / conf / WebXmlConfig.groovy,并覆盖:

webxml {
    filterChainProxyDelegator.add = false
    filterChainProxyDelegator.targetBeanName = "filterChainProxyDelegate"
    filterChainProxyDelegator.urlPattern = "/*"
    filterChainProxyDelegator.filterName = "filterChainProxyDelegator"
    filterChainProxyDelegator.className = "org.springframework.web.filter.DelegatingFilterProxy"

    listener.add = false
    //listener.classNames = ["org.springframework.web.context.request.RequestContextListener"]

    contextparams = [sample: 'Sample Value'] // Add your context param

//  sessionConfig.sessionTimeout = 30
}

之后,在您的resources.groovy中,您可以使用org.codehaus.groovy.grails.web.context.ServletContextHolder.getServletContext()

我在这里看到了解决方案:accessing-servletContext-in-resources-groovy

调用getInitParameter方法获取在web.xml中声明的值。

beans = {

ServletContext sc= org.codehaus.groovy.grails.web.context.ServletContextHolder.getServletContext()
String value = sc.getInitParameter('sample')

}

它可以帮到你