【问题标题】:Grails - Images located in a different path when running from a warGrails - 从战争中运行时位于不同路径的图像
【发布时间】:2014-07-28 20:56:28
【问题描述】:

我一直在开发一个 Grails 应用程序,它使用位于此目录中的一些 FileResources:

MyGrailsApplication\web-app\images

我可以通过 GrailsResourceUtils.WEB_APP_DIR 自然地通过 grails 获取这个目录。但是,当我将 Grails 项目转换为 .war 文件并将其部署到 tomcat 服务器时,该代码不起作用 - 路径变得混乱。

通过一些调试语句,我找到了解决此问题的方法(基本上,在我发动战争之前进行代码修改):

// 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 时干净地获取图像路径?是否有一些我在这里遗漏的最佳实践?

编辑:也许我没有将图像放在理想的目录中?我也愿意接受这方面的建议。

【问题讨论】:

    标签: grails vaadin war


    【解决方案1】:

    要获取资源文件,您可以使用:

       def basePath = grailsApplication.mainContext.servletContext.getRealPath('images')
    

    检查是否以“/”结尾:

    basePath = basePath.endsWith("/") ? basePath : basePath + "/"
    

    然后:

    new FileResource(new File(basePath+"fileName"))
    

    记得在你的控制器/服务中注入 grailsApplication

    【讨论】:

    • 这对我来说很有效 - 它为运行应用程序和部署战争提供了正确的路径。
    【解决方案2】:

    你可以(也)像使用 grail 的 linkGenerator 一样

    final headerImage = new Image(null, new ExternalResource(Grails.get(LinkGenerator).resource(dir: "images", file: "logo.png")))
    

    【讨论】:

    • 我一直在尝试,但它并没有真正起作用。做一个 System.out.println(Grails.get(LinkGenerator).resource(dir: "images", file: "banner.png")); ...产生:“/MyGrailsApplication/images/banner.png”。实际文件位于:MyGrailsApplication\web-app\images\banner.png。我还尝试将图像目录复制到 /MyGrailsApplication 下,就像它似乎想要的那样,但没有运气。
    • @jiman 只需将banner.png 放入web-app/images 目录,生成器生成的URL 将适合您的战争和run-app/MyGrailsApplication 是您的上下文和@ 987654326@ 是映射资源——这采用与部署的类型)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多