视图范围是什么意思?任何人都可以解释它,以便我能理解它与请求范围的不同之处吗?
答案 0 :(得分:133)
@ViewScoped
bean与JSF视图完全一样长。它通常以全新的GET请求或导航操作开始,只要最终用户将视图中的任何POST表单提交给返回null
或void
的操作方法,它就会生效(然后导航回相同的视图)。刷新页面或返回非null
字符串(甚至是空字符串!)导航结果后,视图范围将结束。
@RequestScoped
bean与HTTP请求完全一样。因此,它将在每个请求结束时被包含,并在每个新请求中重新创建,从而丢失所有已更改的属性。
@ViewScoped
bean在富Ajax启用的视图中特别有用,它需要记住Ajax请求中的(已更改的)视图状态。将在每个Ajax请求上重新创建@RequestScoped
,因此无法记住所有已更改的视图状态。请注意,@ViewScoped
bean不会在同一会话中的不同浏览器选项卡/窗口之间共享任何数据,就像@SessionScoped
bean一样。每个视图都有自己唯一的@ViewScoped
bean。