The advantage is that the bean survives postbacks to the same view. You don’t need to preserve any data yourself anymore when used in rendered
attributes or as model for h:dataTable
or as hidden inputs, etcetera. In the past, a lot of hacks were been used to go around this.
A view scoped bean lives as long as you interact with the same view (i.e. you return void
or null
in bean action method). When you navigate away to another view, e.g. by clicking a link or by returning a different action outcome, then the view scoped bean will be trashed by end of render response and not be available in the next request.