2012-08-14 274 views
0

我们覆盖了javax.faces.application.ResourceHandlerWrapperjavax.faces.application.ResourceWrapper以从文件系统加载静态资源(例如css文件)。我们怎样才能实现这个资源加载机制也发生在文件系统中新加载的css文件中引用的资源? 感谢您的帮助。静态资源的JSF加载资源

回答

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网址,这将反过来经过资源处理程序以及替代它们。

+0

谢谢。我们已经使用了EL表达式'#{resource}'。我比较了'url'中的拼写。我们是'url(“#{resource ['someLibrary:somePath/foo.ext']}”)'。我罗了双引号,但它没有帮助。 – Julia 2012-08-14 18:18:21

+0

它应该很好地工作。显然,自定义资源处理程序并不完全正确。运行一个调试器来调查它是如何失败的,然后我们可以谈论它。 – BalusC 2012-08-14 18:19:38