jeudi 31 janvier 2013
Définition d'un managed bean
Posted on 10:17 by mabrouk
Ce que l'on appelle portée d'un bean, dans le contexte des applications web, représente la durée de vie de ce bean en fonction de opérations menées à bien par l'utilisateur.
L'API servlet définit trois portées.
La portée d'un managed bean se configure par annotation :
L'API servlet définit trois portées.
- La requête : portée la plus courte, les beans attachés à une requête sont détruits une fois la réponse envoyée.
- La session : une session est définie par en ensemble de cycles requêtes / réponses entre un même client et une application web. L'API servlet définit un cookie standard,
JSESSIONID
, pour reconnaître son client. - L'application : portée la plus longue. Un bean attaché à l'application vit tant que cette application vit, et est accessible de toutes les sessions ou requêtes.
@RequestScope
, @SessionScope
et @ApplicationScope
. Ces annotations se posent sur la classe du managed bean. La conséquence est qu'une même classe de managed bean ne peut pas avoir d'instances associées à des portées différentes. Ce n'est pas le cas dans l'API servlet, où l'on peut attacher n'importe quelle instance à n'importe quel portée.
Comme tous les composants managés, les managed bean ont un cycle de vie. On peut définir deux callbacks sur ce cycle de vie, en annotant deux méthodes :
Comme d'habitude, la méthode appelée une fois le bean construit peut être utilisée pour préparer des connexions à des sources de données, entre autres.
@PostConstruct
: cette méthode sera invoquée une fois le bean construit, mais avant son utilisation par le moteur JSF ;@PreDestroy
: cette méthode sera appelée juste avant la destruction du bean.
JSF offre enfin un mécanisme simple d'injection de bean, ou de propriété d'un bean dans un managed bean en utilisant l'annotation
Notons qu'à la différence de JPA, l'annotation doit être posée sur le champ, et que c'est le setter associé à ce champ qui sera systématiquement invoqué par le moteur JSF.
@ManagedProperty
. La syntaxe est la suivante.
Exemple 5. Injection d'un managed bean
// // Classe Capitaine // @ManagedBean(name="capitaine") public class Capitaine { // contenu de la classe } // // Classe Equipage // @ManagedBean(name="equipage") public class Equipage { @ManagedProperty(value="#{capitaine}") private Capitaine capitaine ; // reste de la classe }
Notons qu'à la différence de JPA, l'annotation doit être posée sur le champ, et que c'est le setter associé à ce champ qui sera systématiquement invoqué par le moteur JSF.
Définition d'un managed bean
2013-01-31T10:17:00+01:00
mabrouk
J2EE|
Inscription à :
Publier les commentaires (Atom)