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 の jar ファイルと tomahawk-examples-1.1.14-bin - /build/web/WEB-INF/ のすべての war ファイルを含めました。 src/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-nametag現在、そのような taglib ファイルで要素を宣言してはなりません。このようなライブラリ内のすべてのタグは、同じリソース ライブラリから取得する必要があります。

tomahawk の場合、composite-library-name がリソース (META-INF/resources の下のディレクトリ名) を指していないため、エラーが発生します。

ここでの簡単な解決策は、composite-library-name要素を tomahawk.taglib.xml ファイルから削除することです (もちろん、他の目的で必要ない場合)。しかし、私はそれをテストしていません。

于 2015-04-08T13:59:39.957 に答える
1

I think it is caused by Mojarra (it gets confused reading the .taglib.xml, even if is valid syntax to use that file for composite and normal components, it was clarified in the new 2.2 spec) Use MyFaces JSF implementation instead to get it fixed.

于 2013-09-23T10:52:16.873 に答える