1

我们覆盖javax.faces.application.ResourceHandlerWrapperjavax.faces.application.ResourceWrapper从文件系统加载静态资源,例如 css 文件。我们如何才能实现这种资源加载机制也适用于文件系统中新加载的 css 文件中引用的资源?谢谢你的帮助。

4

1 回答 1

2

使用 CSS 文件中的 EL 表达式#{resource}来动态引用它们,而不是使用硬编码路径之类的/context/resources/someLibrary/somePath/someFile.ext东西。

例如

.foo {
    background-image: url(#{resource['someLibrary:somePath/foo.ext']})
}

.bar {
    background-image: url(#{resource['someLibrary:bar.ext']})
}

.baz {
    background-image: url(#{resource['somePath/baz.ext']})
}

.moo {
    background-image: url(#{resource['moo.ext']})
}

这将参考

WebContent
 |-- resources
 |    |-- someLibrary
 |    |    |-- somePath
 |    |    |    `-- foo.ext
 |    |    `-- bar.ext
 |    |-- somePath
 |    |    `-- baz.ext
 |    `-- moo.ext
 :

这样,JSF 默认资源处理程序将用正确的 URL 替换它们,这些/javax.faces.resourceURL 反过来也会通过资源处理程序。

于 2012-08-14T17:32:22.987 回答