Que signifie la portée de la vue? Quelqu'un peut-il expliquer à ce sujet, afin que je puisse comprendre en quoi il diffère de la portée de la demande?
Un haricot @ViewScoped
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, puis reste actif tant que l'utilisateur final envoie un formulaire POST dans la vue à une méthode d'action qui renvoie null
ou void
(et retourne ainsi à la même vue ). Une fois que vous actualisez la page, ou renvoyez une null
chaîne (même une chaîne vide!), la portée de la vue se termine.
Un bean @RequestScoped
Vit exactement aussi longtemps qu'une requête HTTP. Il sera donc garni à la fin de chaque demande et recréé à chaque nouvelle demande, perdant ainsi toutes les propriétés modifiées.
Un bean @ViewScoped
Est donc particulièrement utile dans les vues riches activées par Ajax qui doivent mémoriser l'état d'affichage (modifié) dans les requêtes Ajax. Un @RequestScoped
Un serait recréé à chaque demande Ajax et ne pourrait donc pas se souvenir de tous les états d'affichage modifiés. Notez qu'un bean @ViewScoped
Ne partage aucune donnée entre différents onglets/fenêtres de navigateur de la même session, comme un bean @SessionScoped
. Chaque vue a son propre haricot @ViewScoped
Unique.