如何使用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