我已经尝试了org.omnifaces.resourcehandler.CDNResourceHandler
和org.omnifaces.resourcehandler.UnmappedResourceHandler
。它必定是一些错误配置,但我找不到错误:
faces-config-xml
:
<faces-config ...>
<application>
....
<resource-handler>org.omnifaces.resourcehandler.CDNResourceHandler</resource-handler>
<resource-handler>org.omnifaces.resourcehandler.UnmappedResourceHandler</resource-handler>
...
web.xml
:
<web-app ...>
...
<context-param>
<param-name>org.omnifaces.CDN_RESOURCE_HANDLER_URLS</param-name>
<param-value>
ionicons:ionicons.min.css=http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css
</param-value>
</context-param>
...
然后在我的jsf页面上:
<h:outputStylesheet name="ionicons.min.css" library="ionicons" />
我从“未找到资源”错误中得不到运行时警告或错误:
Unable to find resource ionicons, ionicons.min.css
我使用的是mojarra 2.2.5和tomcat 6.0.41。我已经尝试了omnifaces 1.7和1.10(我的项目也使用了primefaces,但我不知道这是否相关)。关于如何找到错误的任何想法?
答案 0 :(得分:2)
UnmappedResourceHandler
不支持资源库。它在javadoc和showcase中提及。
以下CSS文件引用(注意:UnmappedResourceHandler不支持该库!这是技术限制,只使用名称):
<h:outputStylesheet name="css/style.css" />
技术限制是否则无法从CSS文件内部相对引用资源。使用库时,路径/ionicons
将在您的特定情况下移动到查询参数?ln=ionicons
,然后CSS文件将在错误的相对文件夹/resources
中查找相对图像引用而不是/resources/ionicons
。
将library
移到name
:
<h:outputStylesheet name="ionicons/ionicons.min.css" />
<param-value>
ionicons/ionicons.min.css=http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css
</param-value>
CDNResourceHandler
更新:毕竟,您似乎确实不需要javax.faces:jsf.js
。它主要用于将自动包含的 JSF资源(例如标准JSF的primefaces:jquery/jquery.js
和PrimeFaces的<link>
移动到CDN主机。标准JSF也没有为此提供任何可能性。
如果您确实需要引用外部CSS或JS资源,只需使用普通<script>
或<h:outputStylesheet>
代替<h:outputScript>
或<link rel="stylesheet" href="http://cdn.example.com/style.css" />
<script src="http://cdn.example.com/script.js"></script>
。
<ui:insert>
如果您打算对其进行模板设置以便use target="head"
of the usual JSF resource components,则声明单独的<h:head>
...
<ui:insert name="head-resources" />
</h:head>
。例如。在主模板中
<ui:define name="head-resources">
...
</ui:define>
并在模板客户端
{{1}}