我正在使用OmniFaces CDNResourceHandler将我的资源指向CDN,而不是本地文件。
我在XHTML文件中添加了这一行:<h:outputStylesheet library="twitter-bootstrap" name="bootstrap.min.css" />
我的faces-config.xml有这一行:
<context-param>
<param-name>org.omnifaces.CDN_RESOURCE_HANDLER_URLS</param-name>
<param-value>
twitter-bootstrap:bootstrap.min.css=https://somehost/twitter-bootstrap/3.3.7/bootstrap.min.css
</param-value>
</context-param>
访问该页面时出现此错误:
Unable to find resource twitter-bootstrap, bootstrap.min.css
注意:当我在https://somehost/twitter-bootstrap/bootstrap.min.css
访问该文件时,我可以正确下载该文件。
我正在使用配置为开发阶段的Wildfly下的Mojarra。
资源处理程序已在faces-config.xml
文件中正确配置。
<application>
<resource-handler>org.omnifaces.resourcehandler.CDNResourceHandler</resource-handler>
</application>
我做了一些测试,我注意到如果我在bootstrap.min.css
下创建一个空文件WEBAPP_FOLDER/resources/twitter-bootstrap
,则不会发生错误。如果我删除该文件,则会再次出现错误。
即使我使用CDN,我是否需要在本地保留资源?
答案 0 :(得分:0)
CDNResourceHandler
主要用于将自动包含的 JSF资源移至CDN,例如来自jsf.js
的{{1}}文件或<f:ajax>
来自PrimeFaces的{}和primefaces.js
,或者在生产中安装时自动切换到CDN。
在您使用永久CDN资源的情况下,您根本不需要它。只需使用普通jquery.js
即可。
<link>
the CDNResourceHandler
documentation中也明确提到了这一点。
对于非JSF资源,您可以继续使用引用外部URL的纯HTML
<link rel="stylesheet" src="https://somehost/twitter-bootstrap/bootstrap.min.css" />
和<script>
元素
更新:因为您并不是第一个对此感到疑惑的人,我根据issue 122绕过了OmniFaces 2.6的技术限制。换句话说,您不一定需要本地资源。