Как я могу реализовать переполнение кэша CSS с помощью JSF outputStylesheet?

В шаблонах страниц JSF я использую этот код для включения ресурса CSS:

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

Обычным способом реализации CSS-кэша является добавление параметра версии, например v=123, однако это не поддерживается в outputStyleSheet:

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

вызовет предупреждение JSF1064, и CSS не будет найден.

Ответ 1

Это невозможно без переопределения StylesheetRenderer (если вы на Mojarra). Он действительно не учитывает строку запроса. Тем не менее, как временное обходное решение хорошо знать, что допустимо включать CSS, используя собственное правило CSS @import CSS внутри <h:outputStyleSheet>.

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

Возможно, вы захотите опубликовать запрос на улучшение для мальчиков Mojarra, чтобы принять это во внимание в будущих выпусках.