我有一个具有@ManagedBean注释的ParentBean
类。如果我子类化这个类,ChildBean
不继承@ManagedBean注释,尽管@ManagedBean注释具有元注释Inherited。
我错过了什么?
<>之前JSF 2.0Mojarra 2.0.6 | JBoss 5.1.0.GAEclipse Indigo - Build id: 20110615-0604之前EDIT:仍在寻找解决方案…
javax.annotation.ManagedBean
不存在@Inherited
。javax.faces.ManagedBean
。检查你的导入
而且,我不会依赖那个。我没有在规范中看到它的定义,但是与jsf managed bean的继承通常是一个坏主意。即使你有了它,你也应该有一个抽象基类,它拥有通用的功能,但它本身不是一个托管bean。
另一件事—如果bean上没有注释,稍后阅读代码将会更加困难。读者可能需要一段时间才能意识到它是继承的。
所以把@ManagedBean
放在每个bean上,不要过度使用继承。
在阅读了这个问题和Mojarra的一些源代码(见问题)之后,我认为Mojarra实际上可能没有彻底扫描类(对于加载性能)。
所以我的猜测是,对于一个给定的类,Mojarra AnnotationScanner
停留在这个类上,它不扫描这个类的层次结构。
这就是为什么我的ChildBean
不被识别为ManagedBean
的原因。