托pipebean中查看和请求范围之间的区别
视图范围是什么意思? 任何人都可以解释一下,这样我就可以理解它与请求范围的区别了吗?
@ViewScoped
bean和JSF视图一样长。 它通常以新的GET请求或导航动作开始,只要最终用户在视图中将任何POST表单提交给返回null
或void
的操作方法(因此导航回相同的视图)。 一旦刷新了页面,或者返回一个非null
string(即使是空string!)导航结果,视图范围也将结束。
@RequestScoped
bean与HTTP请求一样长。 因此,每个请求结束时都会被垃圾清理,并在每个新请求上重新创build,从而丢失所有更改的属性。
因此,在丰富的支持Ajax的视图中, @ViewScoped
bean特别有用,它需要记住跨Ajax请求的(改变的)视图状态。 @RequestScoped
会在每个Ajax请求上重新创build,因此无法记住所有更改的视图状态。 请注意, @ViewScoped
bean不会在同一会话中的不同浏览器标签页/窗口之间共享任何数据,就像@SessionScoped
bean一样。 每个视图都有自己独特的@ViewScoped
bean。
也可以看看:
- 如何select合适的bean范围?
-
@ViewScoped
的好处和缺陷