servletContext.getRealPath("/") 在控制器中启动应用程序时抛出错误
servletContext.getRealPath("/") throws an error on app startup in controller
我想定义一个绝对的应用程序目录变量,它可以从定义它的控制器中的每个动作访问(通常它会在 class 构造函数中完成)。我只想在控制器范围内定义一次。我尝试使用 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 中定义控制器作用域可访问的绝对路径变量?
非常感谢,
你可以在那里做 Holders.getServletContext()
而不是 request.getSession().getServletContext()
。
此外,控制器中的 'beforeInterceptors' 永远不会被调用,因为 Grails 3 仅支持独立拦截器。
我想定义一个绝对的应用程序目录变量,它可以从定义它的控制器中的每个动作访问(通常它会在 class 构造函数中完成)。我只想在控制器范围内定义一次。我尝试使用 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 中定义控制器作用域可访问的绝对路径变量?
非常感谢,
你可以在那里做 Holders.getServletContext()
而不是 request.getSession().getServletContext()
。
此外,控制器中的 'beforeInterceptors' 永远不会被调用,因为 Grails 3 仅支持独立拦截器。