我需要一些模板来呈现一些代码供用户粘贴。我把这些放进去了
/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中,而不是在服务器上解压缩。
所以问题是:
答案 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)
我有两种解决方案可以针对这种情况提出建议:
将模板保存在数据库的设置表中。这样就可以保证什么都不会出错。
您可以考虑使用资源文件夹,如Sachin& Nirmal提议。关于安全性,我认为您可以配置SpringSecurity Plugin来保护特定资源,以便网站用户只能访问它。
答案 2 :(得分:0)
我将我的静态资源保存在web-app文件夹中并像这样访问它们 ApplicationHolder.application.parentContext.servletContext.getRealPath( “quickInstallCode.html”) // quickInstallCode.html应该在web-app文件夹中。