Que signifie la portée de la vue ? Quelqu'un peut-il m'expliquer ce qu'il en est, afin que je puisse comprendre en quoi il diffère de la portée de la demande ?
Réponse
Trop de publicités?A @ViewScoped
Le haricot vit exactement aussi longtemps qu'une vue JSF. Il commence généralement par une nouvelle requête GET, ou par une action de navigation, et vit ensuite aussi longtemps que l'utilisateur final soumet un formulaire POST dans la vue à une méthode d'action qui retourne null
o void
(et renvoie ainsi à l même vue). Une fois que vous avez rafraîchi la page, ou renvoyé un non null
(même une chaîne vide !), alors la portée de la vue se terminera.
A @RequestScoped
Le haricot vit exactement aussi longtemps qu'une requête HTTP. Il sera donc détruit à la fin de chaque requête et recréé à chaque nouvelle requête, perdant ainsi toutes les propriétés modifiées.
A @ViewScoped
bean est donc particulièrement utile dans les vues riches compatibles avec Ajax qui doivent se souvenir de l'état de la vue (modifié) à travers les requêtes Ajax. A @RequestScoped
serait recréé à chaque requête Ajax et ne pourrait donc pas se souvenir de tous les changements d'état de la vue. Notez qu'une @ViewScoped
ne partage pas de données entre différents onglets/fenêtres du navigateur dans la même session, comme le ferait un fichier de type @SessionScoped
haricot. Chaque vue a son propre et unique @ViewScoped
haricot.