web-dev-qa-db-fra.com

Différence entre les étendues View et Request dans les beans gérés

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?

65
Maddy

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.

Voir également:

136
BalusC