2012-01-26 19 views
1

warファイルにtaglibraryをパックすることができません。私はタグをプロジェクトから余分なライブラリに移動しました。現在のプロジェクトは今に依存しています。 taglibraryファイルを、タグを含むjarファイルのMETA-INFディレクトリに配置します(どのように記述しますかhere)。しかし、ページは動作しません:Faceletタグライブラリメカニズムが正常に動作しない

Expression Error: Named Object: eu.barbucha.barbatag.simple.PropertyTag not found. 

サーバはtaglibraryを見つけることができます。そうでない場合は、ページが機能し、ちょうど1ワーリングが表示されます。

Warning: This page calls for XML namespace http://barbucha.eu/tags declared with prefix br but no taglibrary exists for that namespace. 

そこで質問です:サーバがちょうど記述子ではなく、クラスを見つけるのはなぜ? WEB-INF/lib/barbatag.jarからWEB-INF/classesにクラスをコピーし、管理コンソールでwebappを再起動すると、ページが機能します。サーバーは、アプリケーションのクラスに直接関与している場合にのみ、UIコンポーネントも検索しますが、WEB-INF/libディレクトリに格納されているjarでは見つかりません。一方、サーバーはjarからtaglib記述子をロードします。それは...重要なクラスの宣言は本当に混乱します:重要なタグの

package eu.barbucha.barbatag.simple;  

@FacesComponent("eu.barbucha.barbatag.simple.PropertyTag") 
public class PropertyTag extends UIComponentBase { ... } 

定義:

<tag> 
    <display-name>The component taking values from a property file</display-name> 
    <tag-name>property</tag-name> 
    <component> 
     <component-type>eu.barbucha.barbatag.simple.PropertyTag</component-type> 
    </component> 
</tag> 

ワンpotentionally重要なポイント:私は春のMVCを使用しています。

+0

私のtaglibrary JARに 'faces-config.xml'ファイルがないようです。 JSF仕様では、そうでなければアノテーションスキャンは必要ありません。 ([注釈付きカスタムJSF2コンポーネントをjarファイルで見つけることができません](http://stackoverflow.com/questions/6150926/cannot-find-annotated-custom-jsf2-component-in-jar) –

答えて

3

@FacesComponentのようなJSF固有の注釈を持つクラスのJARファイルをJSFがスキャンするようにするには、/META-INF/faces-config.xmlファイルをJARに指定する必要があります。これは、JSFがクラスごとに1つのJARファイルを不必要にスキャンすることを防ぎます(多くの場合、非常に時間がかかりCPUが浪費する可能性があります)。

+1

ありがとうございます。空の 'faces-config.xml'(' <?xml version = "1.0" encoding = "UTF-8"のみを含む?> ')が私の問題を解決しました。 –

+0

ようこそ。 – BalusC

関連する問題