servletContext.getRealPath(" /")在控制器

时间:2016-01-15 10:58:17

标签: grails-controller grails-3.0

我想定义一个绝对app目录变量,它可以从定义它的控制器中的每个动作访问(通常在类构造函数中完成)。我想在控制器范围内只定义一次。我试着使用beforeInterceptor:

class FileResourceController {

    def uploadPath = ""

    def beforeInterceptor = {
        uploadPath = request.getSession().getServletContext().getRealPath("/") + "uploads" 
    }
}

但uploadPath结束为空。

只需这样做:

class FileResourceController {

    def uploadPath = request.getSession().getServletContext().getRealPath("/") + "uploads"
}

在应用启动时抛出错误。

在动作方法中设置def uploadPath = request.getSession().getServletContext().getRealPath("/") + "uploads"可以正常工作。

如何在Grails中定义控制器范围可访问的绝对路径变量?

非常感谢,

1 个答案:

答案 0 :(得分:1)

您可以Holders.getServletContext()代替request.getSession().getServletContext()

此外,' beforeInterceptors'从不调用控制器,因为Grails 3只支持独立拦截器。