1

我正在尝试在 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 和 tomahawk-examples-1.1.14-bin 中的 jar 文件 - /build/web/WEB-INF/ 中的所有战争文件源/META-INF

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

4

2 回答 2

1

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

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

规范中也有这个:

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

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

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

于 2015-04-08T13:59:39.957 回答
1

我认为它是由 Mojarra 引起的(它在阅读 .taglib.xml 时会感到困惑,即使将该文件用于复合组件和普通组件的有效语法,它在新的 2.2 规范中已得到澄清)改为使用 MyFaces JSF 实现来获取它固定的。

于 2013-09-23T10:52:16.873 回答