使用Wicket在CSS中引用数百张图像的图像

时间:2011-03-11 22:53:23

标签: css image wicket

从其他不错的帖子中,我们可以使用这样的内容来制作1张单张图片:

mountSharedResource("/images/logo.gif", new ResourceReference(ImageScope.class, "logo.gif").getSharedResourceKey());

但如果我们需要共享100张图片呢?要逐一映射它们实际上是没办法的。有没有一些很好的方法如何实现自动挂载1个目录的所有图像?

如果没有,我正在考虑为驻留在具体图像目录中的所有图像自动编写一些支持在一个循环中执行mountSharedResource。但实际上我不确定这是否是正确的方向。

感谢。

3 个答案:

答案 0 :(得分:2)

嗯,我解决了这个问题:

private void mountResources(Class clazz, String directory) {
    java.net.URL url = clazz.getResource(clazz.getSimpleName() + ".class");

    File[] files = new File(url.getPath()).getParentFile().listFiles();

    for (int i=0; i< files.length; i++) {
        String fileName = files[i].getName();
        if (!fileName.endsWith("class")) {
            mountSharedResource("/" + directory + "/" + fileName, new ResourceReference(clazz, fileName).getSharedResourceKey());
        }
    }
}

并像这样使用它:

    mountResources(ImagesScope.class, "images");
    mountResources(FontsScope.class, "fonts");
    mountResources(JsScope.class, "js");

但令人难以置信的是,Wicket不会在内部以某种方式支持它。我很惊讶。为了安装整个软件包的可收藏页面,我们有mount(path,packageName),但资源没有(如果我理解的话)。

答案 1 :(得分:0)

这会破坏您应用的效果。 最好为所有图像安装一个共享资源,然后根据传递的请求参数加载不同的图像并将它们流回到响应中。

答案 2 :(得分:0)

我不确定这是否是您所需要的,但我找到了以下代码片段来帮助我解决类似的问题:

getMarkupSettings().setAutomaticLinking(true);

我在Wicket's Wiki上发现了它。