我想定义一个绝对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中定义控制器范围可访问的绝对路径变量?
非常感谢,
答案 0 :(得分:1)
您可以Holders.getServletContext()
代替request.getSession().getServletContext()
。
此外,' beforeInterceptors'从不调用控制器,因为Grails 3只支持独立拦截器。