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

Pau*_*ber 5 configuration grails path

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

/project-dir/grails-app/resources/templates/quickInstallCode.html
Run Code Online (Sandbox Code Playgroud)

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

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

ERROR  call, Template file /var/lib/tomcat6/grails-app/resources/templates/quickInstallCode.html not found.
Run Code Online (Sandbox Code Playgroud)

我认为,Grails,为所有东西提供良好的默认值会为我处理这个烂摊子,但似乎没有。

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

BuildSettingsHolder.settings.baseDir.toString()
Run Code Online (Sandbox Code Playgroud)

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

我很沮丧,我无法完成这项简单的任务,但如此复杂的原因似乎是所有文件都封装在 WAR 中,而不是在服务器上解压缩。

所以问题是:

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

Hoà*_*ong 2

针对这种情况我有两个解决方案:

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

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

  • 可悲的是,似乎没有答案真正满足我的需求。对我来说,将这些内容放入数据库似乎开销太大,而将它们放入 Web Apps 文件夹则存在风险。看来我,来自 PHP 世界,仍然需要习惯 Grails 环境和它的陷阱,比如让服务器非常抽象。 (2认同)