我们覆盖javax.faces.application.ResourceHandlerWrapper
和javax.faces.application.ResourceWrapper
以从文件系统加载静态资源,例如css文件。我们如何才能实现这种资源加载机制也适用于从文件系统新加载的css文件中引用的资源?
谢谢你的帮助。
答案 0 :(得分:1)
使用CSS文件中的EL表达式#{resource}
动态引用它们,而不是使用像/context/resources/someLibrary/somePath/someFile.ext
之类的硬编码路径。
E.g。
.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默认资源处理程序将用正确的/javax.faces.resource
URL替换它们,而这些URL也将通过资源处理程序。