我一直在开发一个Grails应用程序,它使用位于此目录中的一些FileResource:
MyGrailsApplication \ web应用\图像
我可以通过GrailsResourceUtils.WEB_APP_DIR自然地通过grails获取此目录。但是,当我将我的Grails项目转换为.war文件并将其部署到tomcat服务器时,该代码不起作用 - 路径搞砸了。
通过一些调试语句,我能够找到一个hacky解决方法(基本上,在我发动战争之前进行代码修改):
// BELOW 2 LINES WORK IN THE WAR FILE, BUT NOT WITH THE RUN-APP CMD
new FileResource(new File("../webapps/InstanceChecker-0.1/images/ok.png"))
new FileResource(new File("../webapps/InstanceChecker-0.1/images/http404.png"))
// BELOW 2 LINES WORK WITH RUN-APP, BUT NOT IN THE WAR
new FileResource(new File(GrailsResourceUtils.WEB_APP_DIR + "/images/ok.png"))
new FileResource(new File(GrailsResourceUtils.WEB_APP_DIR + "/images/http404.png"))
有没有办法在run-app中以及在部署为.war时干净地获取图像路径?是否有一些我在这里错过的最佳实践?
编辑:也许我不是把图像放在理想的目录中?我也愿意接受这方面的建议。
答案 0 :(得分:1)
要获取资源文件,您可以使用:
def basePath = grailsApplication.mainContext.servletContext.getRealPath('images')
检查是否以“/”结尾:
basePath = basePath.endsWith("/") ? basePath : basePath + "/"
然后:
new FileResource(new File(basePath+"fileName"))
请记住在控制器/服务中注入grailsApplication
答案 1 :(得分:0)
你也可以(也)使用grail的linkGenerator,如
final headerImage = new Image(null, new ExternalResource(Grails.get(LinkGenerator).resource(dir: "images", file: "logo.png")))