Search code examples
javacssjsfcache-controlbrowser-cache

How can I implement CSS Cache Busting with JSF outputStylesheet?


In JSF page templates I use this code to include a CSS resource:

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

The usual way to implement CSS cache busting would be to add a version parameter, like v=123, however this is not supported in outputStyleSheet:

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

will cause a JSF1064 warning and the CSS will not be found.


Solution

  • That's not possible without overridding the StylesheetRenderer (assuming you're on Mojarra). It does indeed not take the query string into account. However, as a (temporary) workaround it's good to know that it is valid to include the CSS using CSS' own @import rule inside <h:outputStyleSheet>.

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

    You might want to post an enhancement request to the Mojarra boys to take this into account in future releases.