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