2012-08-14 272 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