开发者

JSF 2 - @ManagedBean not detected

I have a ParentBean class which has the @ManagedBean annotation. If I sub开发者_StackOverflow中文版class this class, the ChildBean does not inherit the @ManagedBean annotation although the @ManagedBean annotation has the meta-annotation Inherited.

What am I missing ?

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

EDIT: Still looking for a solution ...


javax.annotation.ManagedBean does not have @Inherited. javax.faces.ManagedBean has. Check your imports.

Furthermore, I wouldn't rely on that. I don't see it defined in the spec, but usually inheritance with jsf managed bean is a bad idea. Even if you have it, you should have an abstract base class that holds common functionality but is not a managed bean by itself.

Another thing - reading the code later on would be harder if you don't have the annotation on the bean. It may take a while until the reader realizes it is inherited.

So put @ManagedBean on each bean, and don't overuse inheritance.


After reading this question and reading a little bit the source code from Mojarra (see question), I think Mojarra may not actually scan thoroughly the classes (for loading performance).

So my guess is that for one given class, the Mojarra AnnotationScanner stays on this class and it doesn't scan the hierarchy of this same class.

This is why my ChildBean is not recognized as a ManagedBean.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜