Récupérer un managed-bean dans un autre

Bonjour,
Dans le développement d’une application JSF, on a souvent besoin de récupérer un managed-bean qu’on appelera A dans un autre managed-bean qu’on appelera B.
JSF ne fournit malheureusement pas de solution élégante pour faire un truc pareil. Je ne dis pas que c’est pas possible, mais la façon de s’y prendre pour le faire est tellement moche et lourde que je ne vais même pas la montrer ici !

Ayant la chance de trvailler avec Spring, je vais plutôt vous montrer une autre façon tellement plus élégante de faire.

Voici donc la déclarartion du Bean A:

 
@Controller 
@Scope("session") 
public class BeanA { 
 
} 

Notez l’utilisation des annotations Spring @Controller pour exposer BeanA comme managed-bean ainsi que @Scope pour spécifier que c’est stocké en session.

Maintenant, voici le bean B:

 
@Controller 
@Scope("session") 
public class BeanB { 
  @Resource 
  private BeanA beanA; 
  
} 

Et hop !
Il suffit d’annoter le champ beanA par @Resource pour indiquer à Spring que c’est une dépendance et le tour est joué. Spring est assez malin pour injecter exactement le managed-bean de type BeanA figurant dans la même session.

—-

Advertisements

3 Responses to Récupérer un managed-bean dans un autre

  1. rudy says:

    Bonjour,

    Je galère effectivement pour récupérer un managed-bean qu’on appelera A dans un autre managed-bean qu’on appelera B.

    Tu utilises Spring pour y arriver. Il y a un jar paticulier à inclure donc ?

    Merci.

    Rudy.

  2. jawher says:

    Bonjour et merci pour le commentaire,

    Spring peut être téléchargé par ici : http://www.springsource.com/download/community

    Pour son intégration avec JSF, j’en parle ici :
    https://jawher.wordpress.com/2007/11/23/javaspring-integration-spring-2-5-et-jsf-1-2/
    et une autre façon de faire ici :
    https://jawher.wordpress.com/2007/11/30/javaspring-springiser-completement-une-application/

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: