我正在尝试围绕应用程序中的资源进行版本控制。
如果我喜欢这个 resources/js/1_0_0/mainscript.js
它不起作用。它说 RESOURCE_NOT_FOUND
但是当我这样做的时候
资源/js/mainscript.js/1_0_0.js
它有效。我不喜欢第二种方式的组织方式。第一个看起来很酷。有什么想法吗?
我正在使用 Tomcat 7.0,JSF 2.0.9
更新:我正在检查 primefaces-2-2.1.jar。因为当我检查页面源代码时,我看到了这个 /javax.faces.resource/jquery/jquery.js.xhtml?ln=primefaces&v=2.2.1">
然后我查看了META-INF/resources/primefaces/jquery/jquery.js
他们那里没有任何版本控制,但它是如何在头部附加 v=2.2.1
最佳答案
If I do like this resources/js/1_0_0/mainscript.js
It does not work. It says RESOURCE_NOT_FOUND
如果您将 js
指定为库名称,这将起作用。
<h:outputScript library="js" name="mainscript.js" />
但是,这不是资源库的正确用法。不如介绍一个。
resources/default/1_0_0/js/mainscript.js
然后你可以指定如下:
<h:outputScript library="default" name="js/mainscript.js" />
They did not have any versioning in there but how did it append v=2.2.1 in the head
它由 PrimeResource
完成,它使用 ln=primefaces
参数启动资源请求。它的 getRequestPath()
有以下实现:
@Override
public String getRequestPath() {
return super.getRequestPath() + "&v=" + Constants.VERSION;
}
其中 Constants
是随每个 PF 版本更新的 PrimeFaces 特定常量文件。
关于JSF 资源版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9929417/