托管bean中的View和Request范围之间的区别


68

视图范围是什么意思?谁能解释一下,以便我了解它与请求范围的不同之处?

Answers:


147

@ViewScoped豆完全一样长住作为JSF视图。通常,它以一个新的新GET请求或导航动作开始,然后只要最终用户将视图中的任何POST表单提交给返回nullvoid(从而导航回到同一视图)的动作方法,它就会生效。刷新页面或返回非null字符串(甚至是空字符串!)导航结果后,视图范围将结束。

一个@RequestScopedbean的生命长度完全相同HTTP请求。因此,它将在每个请求结束时进行垃圾回收,并在每个新请求上重新创建它,从而丢失所有更改的属性。

@ViewScoped豆因此特别在需要记住跨越Ajax请求的(改变)视图状态富含支持Ajax的看法更为有用。一个@RequestScoped人会在每一个Ajax请求重新创建,因而不能记住所有更改的视图状态。请注意,@ViewScoped在同一会话中,Bean不会像Bean那样在不同浏览器选项卡/窗口之间共享任何数据@SessionScoped。每个视图都有自己的独特之处@ViewScopedbean。

也可以看看:


3
@sessionscope尤其在与浏览器中的选项卡共享会话时会产生很多问题。感谢BalusC。
Makky

2
@Makky:只是不要@SessionScoped用于请求范围内的数据或查看范围内的数据。另请参见stackoverflow.com/questions/7031885/...
BalusC
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.