我开始使用JSF2,所以我想尝试h:outputStylesheet。它工作得很好,但随后我尝试应用“模式”或技巧,将查询字符串添加到随文件版本变化的请求中,以强制浏览器获取更改。
就像what is used here一样。
不幸的是我没能做到这一点。实际上,当使用该标记时,它不会生成一个简单的URL,而是一个已经有查询字符串的计算URL。我在规范和here中找到了一些关于JSF2中资源版本控制的信息,但它似乎引用了一个资源的多个版本,这并不是我所需要的。
当然,我总是可以不使用新标记。但我想在这里分享这一点以供讨论。
更新1-一些示例:
我试过的东西是这样的:
<h:outputStylesheet library="css" name="estilo.css?v=1" target="head"/>它呈现为:
<link type="text/css" rel="stylesheet" href="RES_NOT_FOUND" />很有描述性。;-)
我想要得到的东西是这样的:
<link rel="stylesheet" type="text/css" href="../css/estilo.css?v=1"/>在使用JSP时,我通常这样说:
<link rel="stylesheet" type="text/css"
href="<c:url value='/css/estilo.css?v=${initParam.version}'/>"/>发布于 2011-07-27 18:17:34
面对同样的挑战,我最终扩展了javax.faces.application.ResourceHandlerWrapper and javax.faces.application.ResourceWrapper,将"&v=x.y.z“附加到ResourceWrapper#getRequestString()的结果中。
我见过Primefaces和Openfaces实现的这种解决方案。只需看一下
org.primefaces.application.PrimeResourceHandler#createResource(String resourceName, String libraryName)和
org.primefaces.application.PrimeResource#getRequestPath()不要忘记将您的实现添加到faces-config.xml:
<application>
<resource-handler>your.package.YourResourceHandlerWrapper</resource-handler>
</application>https://stackoverflow.com/questions/4268345
复制相似问题