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

时间:2011-05-17 03:41:49

标签: jsf jsf-2

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

1 个答案:

答案 0 :(得分:133)

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

@RequestScoped bean与HTTP请求完全一样。因此,它将在每个请求结束时被包含,并在每个新请求中重新创建,从而丢失所有已更改的属性。

因此,@ViewScoped bean在富Ajax启用的视图中特别有用,它需要记住Ajax请求中的(已更改的)视图状态。将在每个Ajax请求上重新创建@RequestScoped,因此无法记住所有已更改的视图状态。请注意,@ViewScoped bean不会在同一会话中的不同浏览器选项卡/窗口之间共享任何数据,就像@SessionScoped bean一样。每个视图都有自己唯一的@ViewScoped bean。

另见: