在jar中找不到带注释的自定义JSF2组件

我们正在将JSF1.2迁移到JSF2应用程序,并且我遇到了自定义组件的问题。 我们有一个带有组件的独立jar子,在那个jar子里我有这个:

@FacesComponent(value = "Panel2") public class Panel2 extends UIOutput { ... } 

在我的META-INF下的taglib中我有这个:

  http://www.ssss.be/jsf/mw mw  panel2  Panel2    

在制作了一个这样的jar子并在我的其他项目中使用它之后,我使用如下标签:

 xmlns:mw="http://www.sofico.be/jsf/mw" 

然后:

  

但不幸的是结果:

 javax.faces.FacesException: Expression Error: Named Object: Panel2 not found. at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(ApplicationImpl.java:1858) at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:1129) 

我在这做错了什么?

  • 确保faces-config.xml中的JSF版本至少为版本2
  • 确保faces-config.xml中没有设置为true的metadata-complete属性。
  • 确保该类在WEB-INF/classes ; 或者,如果在WEB-INF/lib的jar中,jar包含faces-config.xml(规范不需要注释扫描)
  • 确保XML配置文件中没有定义Panel2组件类型(此列表优先)

参见JSF 2规范 ; 第11.5.1节。