JSF 2 – 未检测到@ManagedBean

我有一个ParentBean类,它有@ManagedBean注释。 如果我将ChildBean子类化,则ChildBean不会inheritance@ManagedBean批注,尽管@ManagedBean批注具有元标注Inherited 。

我错过了什么?

 JSF 2.0
 Mojarra 2.0.6 |  JBoss 5.1.0.GA
 Eclipse Indigo  -  Build id:20110615-0604

编辑:仍在寻找解决方案……

javax.annotation.ManagedBean没有@Inheritedjavax.faces.ManagedBean有。 检查你的import。

此外,我不会依赖于此。 我没有看到它在规范中定义,但通常使用jsf托管beaninheritance是一个坏主意。 即使你拥有它,你也应该有一个抽象的基类,它具有通用的function,但它本身不是托管bean。

另一件事 – 如果你没有bean上的注释,稍后阅读代码会更难。 可能需要一段时间,直到读者意识到它是inheritance的。

因此,在每个bean上放置@ManagedBean ,不要过度使用inheritance。

在阅读了这个问题并从Mojarra(请参阅问题 )中略读一下源代码之后,我认为Mojarra实际上可能没有彻底扫描类(用于加载性能 )。

所以我的猜测是,对于一个给定的类,Mojarra AnnotationScanner停留在这个类上,它不会扫描同一个类的层次结构。

这就是为什么我的ChildBean不被识别为ManagedBean