2016-01-15 39 views
0

我想定义一个绝对app目录变量,它可以从控制器中的每一个动作访问它所在的定义(通常它会在类构造函数)。我想在控制器范围内只定义一次。我试图使用beforeInterceptor:servletContext.getRealPath(“/”)在应用程序启动时抛出一个错误在控制器中

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

你可以做Holders.getServletContext()那里,而不是request.getSession().getServletContext()

此外,控制器中的'beforeInterceptors'永远不会被调用,因为Grails 3只支持独立拦截器。

+0

起初您的解决方案没有奏效,只是简单地添加“导入grails.util.Holders”使它像魅力一样工作。谢谢! – iTiger

相关问题