托管bean中View和Request范围之间的差异

Mad*_*ddy 65 jsf jsf-2

视图范围是什么意思?任何人都可以解释它,以便我能理解它与请求范围的不同之处吗?

Bal*_*usC 138

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

一个@RequestScopedbean的生命长度完全相同HTTP请求.因此,它将在每个请求结束时被包含,并在每个新请求上重新创建,从而丢失所有已更改的属性.

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

也可以看看:

  • @sessionscope特别是在浏览器中与选项卡共享会话时会产生许多问题.谢谢BalusC. (3认同)
  • @Makky:只是不要对请求范围的数据或查看范围的数据使用`@ SessionScoped`。另请参阅http://stackoverflow.com/questions/7031885/how-to-choose-the-right-bean-scope/ (2认同)