2012-09-09 48 views
4

我正在使用Grails 2.0.4并希望为某些静态资源(如图像或视频)提供服务。Grails 2没有提供静态资源

我在图片/ 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模式设置为空,grails.resources.adhoc.patterns = []然后像'http:// localhost:8080/TmmWeb/videos/grails_logo.png'的网址工作并提供内容。

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

由于这些网址失败,因此在使用这些网址时,将图片或视频嵌入到网页中也会失败。

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

+0

我有同样的问题,但与Grails 2.1.1。 –

+0

我创建了另一个目录来放置一些静态文件,但我总是得到错误404. –

+0

我不知道为什么我的代码现在工作,也许这是一个错字错误。 –

回答

1

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

简而言之,ad-hoc过滤器允许的项目将接收到/ static URI webspace下对应项目的重定向响应。

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

此行为对于1.1.x和1.2版本的资源插件将为真。它与正在使用的Grails版本无关。