JSF 2 - 未检测到@ManagedBean

时间:2011-07-12 08:37:48

标签: java web-applications jsf

我有一个ParentBean类,其中包含@ManagedBean注释。如果我将此类子类化,ChildBean不会继承@ManagedBean批注,尽管@ManagedBean批注具有元标注Inherited

我错过了什么?

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

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

2 个答案:

答案 0 :(得分:7)

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

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

另一件事 - 如果你没有在bean上使用注释,那么稍后阅读代码会更难。可能需要一段时间,直到读者意识到它是继承的。

所以把@ManagedBean放在每个bean上,不要过度使用继承。

答案 1 :(得分:4)

阅读此question并阅读Mojarra的一些源代码(参见question)后,我认为Mojarra实际上可能无法彻底扫描这些类(加载性能)。

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

这就是为什么我的ChildBean无法识别为ManagedBean