OmniFaces CDNResourceHandler 在本地未包含时找不到资源
OmniFaces CDNResourceHandler could not find resources when not included locally
我正在使用 OmniFaces CDNResourceHandler 将我的资源指向 CDN,而不是本地文件。
我在我的 XHTML 文件中添加了这一行:<h:outputStylesheet library="twitter-bootstrap" name="bootstrap.min.css" />
我的脸-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>
我做了一些测试,我注意到如果我在 WEBAPP_FOLDER/resources/twitter-bootstrap
下创建一个空文件 bootstrap.min.css
就不会发生错误。如果我删除文件,错误再次出现。
即使我使用 CDN,我是否需要将资源保留在本地?
CDNResourceHandler
的主要目的是将 自动包含的 JSF 资源移动到 CDN,例如 <f:ajax>
中的 jsf.js
文件,或来自 PrimeFaces 的 primefaces.js
和 jquery.js
,或者在生产中安装时自动切换到 CDN。
对于永久 CDN 资源,您不需要它。只需使用普通 <link>
。
<link rel="stylesheet" src="https://somehost/twitter-bootstrap/bootstrap.min.css" />
这在the CDNResourceHandler
documentation中也有明确提及。
For non-JSF resources, you can just keep using plain HTML <script>
and <link>
elements referring the external URL
更新:因为您不是第一个对此感到疑惑的人,我已经按照 issue 122 绕过了 OmniFaces 2.6 的这一技术限制。换句话说,你不再需要本地资源了。
我正在使用 OmniFaces CDNResourceHandler 将我的资源指向 CDN,而不是本地文件。
我在我的 XHTML 文件中添加了这一行:<h:outputStylesheet library="twitter-bootstrap" name="bootstrap.min.css" />
我的脸-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>
我做了一些测试,我注意到如果我在 WEBAPP_FOLDER/resources/twitter-bootstrap
下创建一个空文件 bootstrap.min.css
就不会发生错误。如果我删除文件,错误再次出现。
即使我使用 CDN,我是否需要将资源保留在本地?
CDNResourceHandler
的主要目的是将 自动包含的 JSF 资源移动到 CDN,例如 <f:ajax>
中的 jsf.js
文件,或来自 PrimeFaces 的 primefaces.js
和 jquery.js
,或者在生产中安装时自动切换到 CDN。
对于永久 CDN 资源,您不需要它。只需使用普通 <link>
。
<link rel="stylesheet" src="https://somehost/twitter-bootstrap/bootstrap.min.css" />
这在the CDNResourceHandler
documentation中也有明确提及。
For non-JSF resources, you can just keep using plain HTML
<script>
and<link>
elements referring the external URL
更新:因为您不是第一个对此感到疑惑的人,我已经按照 issue 122 绕过了 OmniFaces 2.6 的这一技术限制。换句话说,你不再需要本地资源了。