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