2011-07-12 11 views
5

tengo una clase ParentBean que tiene la anotación @ManagedBean. Si subclase de esta clase, el ChildBean no hereda la anotación @ManagedBean aunque la anotación @ManagedBean tiene la meta-anotación Inherited.JSF 2 - @ManagedBean no detectado

¿Qué me estoy perdiendo?

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

EDIT: Todavía estás buscando una solución ...

Respuesta

4

Después de leer este question y leer un poco el código fuente de la Mojarra (ver question), creo que Mojarra en realidad no puede escanear a fondo las clases (para rendimiento de carga).

Así que mi suposición es que para una clase dada, el Mojarra AnnotationScanner permanece en esta clase y no escanea la jerarquía de esta misma clase.

Es por eso que mi ChildBean no se reconoce como ManagedBean.

6

javax.annotation.ManagedBean no tiene @Inherited. javax.faces.ManagedBean tiene. Verifica tus importaciones.

Por otra parte, yo no confiar en eso. No lo veo definido en la especificación, pero generalmente la herencia con jin administrado de jsf es una mala idea. Incluso si lo tiene, debe tener una clase base abstracta que contenga una funcionalidad común, pero no es un frijol administrado por sí mismo.

Otra cosa - la lectura del código más adelante sería más difícil si usted no tiene la anotación en el bean. Puede tomar un tiempo hasta que el lector se da cuenta de que es heredado.

Ponga @ManagedBean en cada bean, y no sobreutilice la herencia.

+0

Lo sentimos, he cometido un error. Yo uso 'javax.faces.bean.ManagedBean'. Este no es heredado. – Stephan

+0

No recibí el comentario. – Bozho

+1

Estoy usando 'javax.faces.bean.ManagedBean' para anotar' ParentBean'. 'ChildBean' no hereda esta anotación. – Stephan

Cuestiones relacionadas