【发布时间】:2012-07-29 12:14:26
【问题描述】:
我有 3 个 Grails 2.x 项目。在本例中,它们是:
ProjectCore - A Grails plugin containing all reusable code (domains, taglibs, etc)
ProjectWeb - Front facing web application. Uses ProjectCore
ProjectAdmin - Admin appliction. Uses ProjectCore
几乎所有的图像、js、taglibs、服务等都在 ProjectCore 中,在各个项目中只有应用特定的控制器/视图/服务/js/css。
使用 NetBeans 作为我的 IDE,一切都在本地运行良好。我完成了 ProjectAdmin 项目,并将其部署到运行 Tomcat 6 的 Ubuntu 服务器上。应用程序中的所有内容都按预期工作,除了 1 个图像:avatar.png(包含在 ProjectCore 应用程序中)。
我正在使用 g:resource 标记创建所有图像链接,并且它们都正确解析为 /static/images/some_image_name.png url,除了这张图像。我还验证了该图像存在于战争中(位于所有其他图像所在的 plugins/ProjectCore/images)。
对于这个特定的图像,如果用户没有为自己上传头像,我将使用标记库 (AvatarTagLib) 创建指向该图像的链接。此 Taglib 在 ProjectRoot 中,但正在从其他项目中调用。我相信其他图像是从特定项目中的视图中调用的,所以这可能是挂断的地方。
最初,当我部署应用程序时,我忘记将战争(和包含目录)的所有权更改为 tomcat6:tomcat6,所以我遇到的问题不仅是这个图像,还有来自 SpringSecurityPlugin 的 messages.properties 文件.我将其全部清除,修复了权限,并且解决了除此之外的所有问题。
以前有没有人遇到过这种行为,或者知道我可以通过其他途径解决这个问题吗?
编辑:我忘了提一件事。当我尝试通过http://admin.mydomain.com/images/avatar.png 或http://admin.mydomain.com/static/images/avatar.png 直接访问图像时,都返回404。但是,我可以通过这种方式访问其他图像。
编辑 2:这不仅限于单个图像。它影响了插件中大约一半的图像。
【问题讨论】:
-
您是否将 plugin='projectRoot' 传递给您的标签?
-
@tomas 不,我不是。我假设您的意思是 g:resource 标签?另外,我在上面对直接访问文件进行了编辑。