Как я могу реализовать очистку кеша 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 не будет найден.


person mjn    schedule 10.06.2011    source источник


Ответы (1)


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

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

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

person BalusC    schedule 10.06.2011
comment
@banter: лучше используйте управление версиями библиотеки ресурсов. См. также нижнюю часть этого ответа: stackoverflow.com/questions/11988415/ - person BalusC; 28.02.2013
comment
Спасибо, но я хотел бы избежать переименования каталогов. Из JSP я привык определять версию скриптов через версию maven, распространяемую по запросу. Так что не похоже, что в JSF есть простое решение. - person banterCZ; 28.02.2013
comment
@banter: тогда создайте собственный обработчик ресурсов. - person BalusC; 28.02.2013
comment
Как насчет того, чтобы не использовать теги «h» и писать только html? - person banterCZ; 28.02.2013