【问题标题】:Grails 2 not serving static resourcesGrails 2 不提供静态资源
【发布时间】:2012-09-09 21:17:46
【问题描述】:

我正在使用 Grails 2.0.4 并希望提供一些静态资源,例如图像或视频。

我在 images/grails_logo.png 中有 grails 徽标的 png 版本(和往常一样)。如果我输入 url 'http://localhost:8080/TmmWeb/static/images/grails_logo.png',它会显示这个标志。

但如果我输入“http://localhost:8080/TmmWeb/static/images/grails_logo.jpg”(还有一个 jpeg 版本的旧徽标),应用程序会显示一个 404 报告,“The请求的资源 () 不可用。”。

如果我创建了一个子目录“videos”,并将临时模式的配置行更改为grails.resources.adhoc.patterns = ['/images/*', '/css/*', '/js/*', '/plugins/*','/videos/*'],那么 URL 也将是“http://localhost:8080/TmmWeb/static/images/grails_logo.png”投诉失败。

如果我使用 grails.resources.adhoc.patterns = [] 将 adhoc 模式设置为 null,则 'http://localhost:8080/TmmWeb/videos/grails_logo.png' 之类的 URL 可以正常工作并提供内容。

那么,为什么使用 adhoc 过滤器只能从图像目录提供 .png 文件,而不是从视频目录提供 .jpg 文件?

由于这些 url 失败,使用这些 url 时在页面中嵌入图像或视频也会失败。

我还应该注意,最终我希望能够访问整个视频目录,而无需将每个视频都输入到资源声明中。

【问题讨论】:

  • 我有同样的问题,但使用 Grails 2.1.1。
  • 我创建了另一个目录来放置一些静态文件,但我总是收到错误 404。
  • 我不知道为什么我的代码现在可以工作了,可能是拼写错误。

标签: static grails-2.0


【解决方案1】:

这里的答案变得相当复杂。新的 1.2 版本的 Resources 插件在其用户指南中包含完整的说明。

简而言之,ad-hoc 过滤器允许的项目将收到重定向响应到 /static URI 网络空间下的相应项目。

web-app 基本目录下的任何文件都将在 /static URI 网络空间下的相应位置提供服务,即使它们未在 ad-hoc 模式过滤器中列出。

此行为适用于 1.1.x 和 1.2 版本的 Resources 插件。它与正在使用的 Grails 版本无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2018-03-16
    • 2022-10-20
    相关资源
    最近更新 更多