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

问题描述 投票:0回答:1

查看范围是什么意思?谁能解释一下,以便我可以理解它与请求范围有何不同?

jsf jsf-2
1个回答
157
投票

@ViewScoped
bean 的生命周期与 JSF 视图的生命周期完全相同。它通常以全新的 GET 请求或导航操作开始,然后只要最终用户将视图中的任何 POST 表单提交到返回
null
void
的操作方法(从而导航回来),它就会存在到相同视图)。一旦刷新页面,或返回非
null
字符串(甚至是空字符串!)导航结果,则视图范围将结束。

@RequestScoped
bean 的生命周期与 HTTP 请求的生命周期完全相同。因此,它将在每个请求结束时被丢弃,并在每个新请求时重新创建,从而丢失所有更改的 bean 属性。

因此,

@ViewScoped

 bean 在丰富的支持 Ajax 的视图中尤其有用,这些视图需要记住跨 Ajax 请求的(已更改的)bean 属性。每个 Ajax 请求都会重新创建一个 
@RequestScoped
 ,因此无法记住所有更改的 bean 属性。请注意,
@ViewScoped
 bean 不会像 
@SessionScoped
 bean 那样在同一会话中的不同浏览器选项卡/窗口之间共享任何数据。每个视图都有自己独特的
@ViewScoped
 bean。

另请参阅:

  • 如何选择合适的bean范围?
  • @ViewScoped
    的优点和缺点
© www.soinside.com 2019 - 2024. All rights reserved.