JSF 2 - @ManagedBean not detected

前端 未结 2 1059
广开言路
广开言路 2020-12-11 05:31

I have a ParentBean class which has the @ManagedBean annotation. If I subclass this class, the ChildBean does not inherit the @ManagedBean annotati

相关标签:
2条回答
  • 2020-12-11 05:43

    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.

    0 讨论(0)
  • 2020-12-11 06:02

    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 讨论(0)
提交回复
热议问题