如何使用omnifaces CDNResourceHandler与版本化的资源?
原始url:
javax.faces.resource/jquery/jquery.js.xhtml?ln=primefaces&v=5.0
的url:
//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js
如何映射到一个特定的url,省略版本查询参数?
映射:
使用以下映射将版本查询参数附加到最终url,导致404 HTTP错误。
primefaces:jquery/jquery.js=//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js
result in:
//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js&v=5.0
系统:
Glassfish 4
银鲈2.24
Primefaces 5.0
重写2.11
我复制了它。这将在 OmniFaces CDNResourceHandler
之后初始化PrimeFaces PrimeResourceHandler
时发生。
如果你在/WEB-INF/faces-config.xml
中声明了CDNResourceHandler
,那么这是非常意外的,很可能是GlassFish4中的一个bug。
但是如果你在一个JAR的/META-INF/faces-config.xml
中声明了CDNResourceHandler
,然后又把/WEB-INF/lib
放在了一个JAR中,那么如果GlassFish在PrimeFaces JAR之前初始化了这个JAR,那么这种情况确实会发生。为了解决这个问题,您需要显式地声明JAR的/META-INF/faces-config.xml
在PrimeFaces之后初始化,方法是将以下条目添加到JAR的/META-INF/faces-config.xml
中:
<ordering>
<after>
<name>primefaces</name>
</after>
</ordering>
或者,将CDNResourceHandler
声明移动到webapp的/WEB-INF/faces-config.xml
。