【问题标题】:Unable to find or serve resource, dataList.xhtml, from library, org.apache.myfaces.custom无法从库 org.apache.myfaces.custom 中找到或提供资源 dataList.xhtml
【发布时间】:2013-09-22 21:37:13
【问题描述】:

我正在尝试在 JSF 和 Hibernate 中实现分页。

我的 html 页面上有这些声明。

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" 
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core"
xmlns:t="http://myfaces.apache.org/tomahawk">

<t:dataList value="#{med.pages}" var="page">

我已包含 tomahawk20-1.1.14-bin - /build/web/WEB-INF/lib 中的 jar 文件和 tomahawk-examples-1.1.14-bin - /build/web/WEB 中的所有战争文件-INF/src/META-INF

但是,我收到此错误:无法从库 org.apache.myfaces.custom 中找到或提供资源 dataList.xhtml。 我该怎么办?

【问题讨论】:

  • 一些 Web 服务器(apache、weblogic)已经包含 JSF 库。如果你再次尝试包含它们,服务器容器会报错。

标签: jsf pagination tomahawk


【解决方案1】:

我认为它是由 Mojarra 引起的(它会混淆阅读 .taglib.xml,即使将该文件用于复合组件和普通组件的有效语法,它在新的 2.2 规范中已得到澄清)改为使用 MyFaces JSF 实现把它修好。

【讨论】:

  • 很遗憾,没有其他出路。如果他们没有正确实现规范所说的内容,那么保持与 Mojarra 兼容的库是不可能的:(。
  • 谢谢,那我用 Myfaces 试试
【解决方案2】:

我相信这是一个战斧问题。 JSF 2.2 规范提到了这一点:

正如在 facelet 标记库模式中指定的那样,运行时还必须 支持composite-library-name 元素。运行时必须 将此元素的内容解释为资源的名称 如第 2.6.1.4 节“本地化和 版本化资源”。如果一个 facelet 标记库描述符文件是 遇到包含此元素的,运行时必须检查 同一个标签库描述符中的元素并制作它 可用于 facelet 页面中的 XML 命名空间声明。

规范中也有这样的:

如果您想使用 cc 的命名空间不是 http://java.sun.com/jsf/composite/libraryName 你需要一个 声明 composite-library-name 的 taglib 文件。目前你必须 不要在这样的 taglib 文件中声明任何 tag 元素。中的所有标签 这样的库必须来自同一个资源库。

在 tomahawk 的情况下,composite-library-name 不指向资源(META-INF/resources 下的目录名称),因此会出现错误。

这里的简单解决方案可能是从 tomahawk.taglib.xml 文件中删除 composite-library-name 元素(当然,如果它不需要用于任何其他目的)。不过我还没有测试过。

【讨论】:

  • 需要补充一点,尽管 OP 报告的消息是对 Mojarra 2.2.10 和 Tomahawk20-1.1.4 的警告
  • Tomahawk20-1.1.14 似乎是在 2012 年 10 月 23 日构建的,从那时起(将近 4 年)该项目似乎没有更新。我猜这个问题不会由项目维护者解决。您 (OP) 可能会在 PrimeFaces 中找到可以替换此功能的内容。
猜你喜欢
  • 2014-06-30
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 2018-01-10
  • 2014-08-21
  • 1970-01-01
相关资源
最近更新 更多