JSF 资源版本控制

标签 jsf tomcat jsf-2 primefaces

我正在尝试围绕应用程序中的资源进行版本控制。

如果我喜欢这个 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() + "&amp;v=" + Constants.VERSION;
}

其中 Constants 是随每个 PF 版本更新的 PrimeFaces 特定常量文件。

关于JSF 资源版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9929417/

相关文章:

validation - 每个 jsf 验证器标记的单独错误消息

java - 如何从 Web 应用程序的根目录引用 Java Web 应用程序中的任何图像?

jsf-2 - 程序化 Java EE 6 登录 : how to catch the LoginException?

jsf - 是否跨 session 范围的 JSF 支持 bean 观察到 CDI 事件

jsf-2 - JSF格式的IF-ELSE条件。需要知道正确的方法

jsf - 如何在 EL 中获取当前组件的 id

jsf - Primefaces p :messages does not display

java - 为什么 Weld 在 Tomcat 上显示 "Injection into Listeners is not supported"?

java - 更新一个巨大的 war 文件而无需每次都重新部署 - apache

debugging - 在VM 环境中调试Open AM 有哪些好的技巧?