Grails 2.0 和 servletContext

标签 grails servlets grails-2.0

我正在尝试像这样访问 Controller 中的 servletContext,但不断出现空指针异常:

def servletContext = getServletContext()
def serverPath  = servletContext.getRealPath("/")

...我最近在邮件列表中遇到过这个问题,但建议的唯一“正确”解决方法是将其设置在 BootStrap.groovy 的 init 闭包中:

   import org.codehaus.groovy.grails.web.context.ServletContextHolder as SCH

class BootStrap {

    def init = { servletContext ->

         SCH.servletContext = servletContext
    }
....

……现在还是这样吗?该解决方案对我来说没有任何区别,仍然得到 NPE

提前致谢

最佳答案

servletContext 是一个 spring bean,如果您在 Controller 中声明 def servletContext,它将自动注入(inject)。

持有者对象正在消失。获取 ServletContext 或 ApplicationContext 的推荐方法是通过 grailsApplication spring bean。对于无法访问 grailsApplication 的情况(例如静态方法),您可以创建自己的持有者类。

Burt Beckwith 就该主题撰写了几篇精彩的博客文章:Accessing the GrailsApplication and ApplicationContext from domain classes without holdersCreate your own Grails holder class .

关于Grails 2.0 和 servletContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8249843/

相关文章:

list - 如何将HashMap传递到gsp页面,然后再返回到 Controller ?

java - 如何在启动时设置一个简单的 Spring 表单

grails - Grails创建多个值(value)图

spring - 带有永久登录名的Spring Security重新认证

javascript - Grails 渲染内容动态访问 id 元素

grails - 自定义插入和更新方法被自动保存击败

Grails - 无法将子记录添加到父记录

grails - GORM-在.get()函数中获取SQL异常

java连接类,从servlet传递字符串

java - Wicket 和 Jersey2 位于同一 web.xml 中