2012-06-12 22 views
23

Esta podría ser una pregunta de novato, sin embargo, en muchos tutoriales y ejemplos vi estas anotaciones como si hicieran lo mismo.Diferencia entre @Named y @ManagedBean anotaciones en JSF2.0 Tomcat7

Sin embargo, me encontré con algunas limitaciones con el @Named (especialmente con la inyección de dependencia, etc.) No pude encontrar una fuente donde se explica la diferencia y estaría muy agradecido si alguien puede dar una visión general para usar uno o el otro.

+1

¿Qué tipo de limitaciones? '@ ManagedBean' es un subconjunto de las funciones de' @ Named', por lo que '@ Named' debería funcionar en todas partes. –

Respuesta

36

@Named proporciona un bean administrado CDI con un nombre EL que se utilizará en tecnologías de visualización como JSF o JSP. Tenga en cuenta que en una aplicación CDI, no necesita para realizar un anotación administrado por CDI (gracias a @Karl por su comentario)

@ManagedBean hace que el bean gestionado por JSF y se puede:

  • inyectarlo en otros granos @ManagedBean anotada
  • acceder a él desde su punto de vista a través de lenguaje de expresión
  • (pero no en los granos de @Named!)

Consulte este related question para obtener más información sobre cómo funciona la inyección entre ambos tipos de granos.

Tenga en cuenta que también existe una diferencia con el alcance de los beans. Vienen de diferentes paquetes, pero se nombran de forma idéntica (JSF: javax.faces.bean, CDI: javax.enterprise.context, lo que a menudo es una fuente de error y confusión si se incluye la clase equivocada

Desde mi experiencia:. Debe utilizar granos CDI siempre que sea posible ya que son más flexibles que los beans administrados por JSF. El único inconveniente es que CDI no conoce un alcance de vista, por lo que debe recurrir a @ManagedBean o usar una extensión de terceros como Seam.

+1

+1. @matt: Creo' RequestScoped + KeepAlive = ViewScoped' para que también se pueda usar con @ Nombrado. ¿Estoy en lo cierto? – Addicted

+0

@Abhinav: KeepAlive desde alguna biblioteca de componentes como Richfaces? –

+0

¡Muchas gracias por su explicación! – user871784

Cuestiones relacionadas