JSF为静态资源加载资源

时间:2012-08-14 17:14:20

标签: css jsf resources primefaces

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

1 个答案:

答案 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也将通过资源处理程序。