如何在JSF outputStylesheet中实现CSS缓存破坏?

10

在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个回答

11

如果您使用的是Mojarra,那么在不重写StylesheetRenderer的情况下是不可能实现的。它确实没有考虑查询字符串。然而,作为(临时)解决方法,了解可以使用CSS自己的@import规则在<h:outputStyleSheet>中包含CSS是有效的。

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

您可能希望向Mojarra开发团队提交一个增强请求,以便在未来的版本中考虑这一点。


1
@banter:最好使用资源库版本控制。请参见此答案底部:https://dev59.com/e2ct5IYBdhLWcg3wk-Rq#11988418 - BalusC
谢谢,但我想避免重命名目录。从JSP开始,我习惯于通过Maven版本传播到请求来定义脚本版本。因此,在JSF中似乎没有简单的解决方案。 - banterCZ
2
@banter:那就创建一个自定义资源处理程序吧。 - BalusC
不使用'h'标签,直接编写HTML代码怎么样? - banterCZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接