无法让Omnifaces资源处理程序工作:无法找到资源

时间:2015-02-16 12:08:23

标签: jsf omnifaces

我已经尝试了org.omnifaces.resourcehandler.CDNResourceHandlerorg.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,但我不知道这是否相关)。关于如何找到错误的任何想法?

1 个答案:

答案 0 :(得分:2)

UnmappedResourceHandler不支持资源库。它在javadocshowcase中提及。

  

以下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}}