我無法將標記庫打包到戰爭文件中。我將標記從項目移動到當前項目現在依賴的額外庫。我把標籤庫文件放到jar包含標籤的META-INF
目錄中(如何描述here)。但頁面不起作用:Facelet標記庫機制無法按預期工作
Expression Error: Named Object: eu.barbucha.barbatag.simple.PropertyTag not found.
服務器能夠找到標籤庫。否則,頁面的作品,似乎只是一個華林:
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
並在管理控制檯中重新啓動Web應用程序時,該頁面即可正常工作。只有當服務器直接涉及應用程序的類時,服務器纔會查找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重要的一點:我使用Spring MVC的。
看來我的標籤庫JAR缺少'faces-config.xml'文件。 JSF規範不需要註釋掃描。 (請參閱[無法在jar中找到註釋的自定義JSF2組件](http://stackoverflow.com/questions/6150926/cannot-find-annotated-custom-jsf2-component-in-jar)) –