4

我正在使用 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 报告“请求的资源( ) 不可用。”。

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

如果我将 adhoc 模式设置为 null,grails.resources.adhoc.patterns = []然后像 'http://localhost:8080/TmmWeb/videos/grails_logo.png' 这样的 url 工作并提供内容。

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

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

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

4

1 回答 1

1

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

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

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

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

于 2013-03-04T22:39:41.143 回答