如何使用JSF 2 h:outputStylesheet实现“CSS版本控制”(以解决缓存问题)?

我开始使用JSF 2,所以我想尝试一下h:outputStylesheet。 它工作正常但后来我尝试应用“模式”或将查询字符串添加到请求的技巧,该请求随文件版本而变化以强制浏览器获取更改。

像这里使用的东西 。

不幸的是我无法做到这一点。 实际上,当使用该标记时,它不会生成一个简单的URL,而是一个已经具有查询字符串的计算URL。 我已经在规范和这里找到了有关JSF 2中资源版本化的一些信息,但它似乎指的是资源的多个版本,这不是我需要的。

当然,我总是可以回去不使用新标签。 但我想在此分享一下以供讨论。

更新1 – 一些例子:

我试过的是这样的:

 

其呈现为:

  

相当具有描述性。 😉

我试图得到的是这样的:

  

其中,使用JSP,我曾经这样说过:

 <link rel="stylesheet" type="text/css" href=""/> 

面对同样的挑战,我最终扩展了javax.faces.application.ResourceHandlerWrapper and javax.faces.application.ResourceWrapper ,将“&v = xyz”附加到ResourceWrapper#getRequestString()的结果中。

我看到了Primefaces和Openfaces实现的这种解决方案。 只要看看它的来源

 org.primefaces.application.PrimeResourceHandler#createResource(String resourceName, String libraryName) 

 org.primefaces.application.PrimeResource#getRequestPath() 

可在这里 。

不要忘记将您的实现添加到faces-config.xml:

  your.package.YourResourceHandlerWrapper