社区首页 >问答首页 >当我“清理并构建”时,我的jsf应用的resources文件夹中的图片被删除了。

当我“清理并构建”时,我的jsf应用的resources文件夹中的图片被删除了。
EN

Stack Overflow用户
提问于 2011-12-27 03:18:33
回答 1查看 556关注 0票数 1

我真的不知道这是否是Netbeans的问题,但问题是:在我的jsf web应用程序的根目录中,我有一个名为resources的文件夹,其中包含了图像、css和js (用于javascript)子文件夹。子文件夹包含各自的内容。下面是我如何(例如)从应用程序中引用脚本:

代码语言:javascript
代码运行次数:0
复制
   <h:outputScript library="js" target="head" name="dialog.js"/>

问题是,当我清理和构建时,css目录和js目录中的文件保持不变,而images目录中的所有图像都被删除了。那么,如果jsf资源机制在每次“清理并构建”时都会清除我的图像,那么我如何使用它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-27 03:44:38

JSF不会这样做。这是服务器做的事情。此问题表明您正在手动存储(上传?)图像在展开的WAR文件夹中,而不是在它之外的任何地方。“清理并重建”只是清理服务器的工作文件夹和旧的扩展的WAR,并基于原始的WAR重建webapp (本质上,在开发时,是项目的结构)。顺便说一句,这不仅在开发中发生,而且在重新部署新的WAR文件时也会在生产中发生。

这种行为是按规范进行的。您不应该手动将文件放在展开的WAR文件夹中,并期望它们神奇地包含在原始WAR文件中或在重新部署时保留。

将它们保存在战争之外的固定和永久位置。如果您将外部路径作为新的上下文添加到服务器,那么您可以通过通常的方式通过<img><h:graphicImage value>引用它们。另请参见Load images from outside of webapps / webcontext / deploy folder using or tag

如果您确实需要通过JSF资源处理程序来解析它们,以便可以在诸如<h:graphicImage library="uploads" name="foo.png>之类的东西中使用它们,那么您需要实现一个自定义的ResourceHandler。它看起来像这样:

代码语言:javascript
代码运行次数:0
复制
public class UploadedResourceHandler extends ResourceHandlerWrapper {

    private ResourceHandler wrapped;

    public MyResourceHandler(ResourceHandler wrapped) {
        this.wrapped = wrapped;
    }

    @Override
    public ResourceHandler getWrapped() {
        return this.wrapped;
    }

    @Override
    public Resource createResource(String resourceName, String libraryName) {
        if ("uploads".equals(libraryName)) {
            return new YourCustomUploadedResourceImpl(resourceName);
        } else {
            return super.createResource(resourceName, libraryName);
        }
    }

}

要让它运行,请在faces-config.xml中按如下方式注册它

代码语言:javascript
代码运行次数:0
复制
<application>
    <resource-handler>com.example.UploadedResourceHandler</resource-handler>
</application>

然而,用一个简单的答案来概括这并不是微不足道的。您还需要了解HTTP (缓存)是如何工作的。只需阅读javadoc,从ResourceHandler开始,看看Mojarra自己的ResourceHandlerImplResourceImpl源代码就能明白其中的含义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8640832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文