如何使用Grails访问项目目录中的文件

时间:2011-05-09 09:53:29

标签: grails configuration path

我需要一些模板来呈现一些代码供用户粘贴。我把这些放进去了

/project-dir/grails-app/resources/templates/quickInstallCode.html

然后我尝试使用它们的相对路径(grails-app/resources/templates/quickInstallCode.html)来访问它们,并且效果很好。

当我们使用.war文件将应用程序部署到Tomcat服务器时,路径开始指向错误的位置。

ERROR  call, Template file /var/lib/tomcat6/grails-app/resources/templates/quickInstallCode.html not found.

我认为,Grails,为所有内容提供良好的默认值会为我处理这个混乱,但似乎没有。

我也尝试了这个调用,它似乎工作得很好,但是在部署时,BuildSettingsHolder不包含构建设置,这导致致命错误。

BuildSettingsHolder.settings.baseDir.toString()

http://grails.org/doc/latest/api/grails/util/BuildSettingsHolder.html http://grails.org/doc/latest/api/grails/util/BuildSettings.html

我非常沮丧,因为我无法完成这项简单的工作,但是之所以这么复杂,原因似乎是所有文件都封装在WAR中,而不是在服务器上解压缩。

所以问题是:

  • 你的项目在哪里放? 像这样的文件?
  • 如何获得 可靠稳定的访问方式 这个文件?我只需要一个到基本目录的稳定路径,而不必在配置中硬编码......这可能不会那么难。

3 个答案:

答案 0 :(得分:2)

看看这个link并尝试使用spring提供的getResource。它的方式更灵活,可配置。

def filePath = "resources/file.txt"
def appHolder=ApplicationHolder.application.parentContext.getResource("classpath:$filePath")

顺便说一句,Conf位于类路径的根目录下,你可以将文件粘贴在src / java或src / groovy中。

答案 1 :(得分:2)

我有两种解决方案可以针对这种情况提出建议:

  1. 将模板保存在数据库的设置表中。这样就可以保证什么都不会出错。

  2. 您可以考虑使用资源文件夹,如Sachin& Nirmal提议。关于安全性,我认为您可以配置SpringSecurity Plugin来保护特定资源,以便网站用户只能访问它。

答案 2 :(得分:0)

我将我的静态资源保存在web-app文件夹中并像这样访问它们 ApplicationHolder.application.parentContext.servletContext.getRealPath( “quickInstallCode.html”) // quickInstallCode.html应该在web-app文件夹中。

相关问题