2011-06-10 40 views
10

在JSF頁面模板我使用此代碼包括CSS資源:如何使用JSF outputStylesheet實現CSS Cache Busting?

<h:outputStylesheet library="css" name="mystyles.css" /> 

通常的方法來實現CSS緩存無效將增加一個版本的參數,如v=123,但是這不是在outputStyleSheet支持:

<h:outputStylesheet library="css" name="mystyles.css?v=123" /> 

將導致JSF1064警告,並且CSS將不會被找到。

回答

9

如果不覆蓋StylesheetRenderer(假設你在Mojarra),這是不可能的。它確實不考慮查詢字符串。但是,作爲(臨時)解決方法,最好知道在<h:outputStyleSheet>中使用CSS自己的@import規則包含CSS是有效的。

<h:outputStylesheet target="head"> 
    @import url('css/mystyles.css?v=123') 
</h:outputStylesheet> 

您可能要發佈一個enhancement request到鑽嘴魚科男生考慮到這一點在未來的版本。

+0

它對''起什麼作用? – banterCZ 2013-02-28 11:26:42

+1

@banter:更好地使用資源庫版本控制。請參閱此答案的底部:http://stackoverflow.com/questions/11988415/what-is-the-jsf-resource-library-for-and-how-should-it-be-used/11988418#11988418 – BalusC 2013-02-28 11:36:32

+0

謝謝,但我想避免重命名目錄。從JSP開始,我用來通過maven版本傳播請求來定義腳本版本。所以它看起來並不像JSF中有一個簡單的解決方案。 – banterCZ 2013-02-28 12:06:22