托管 bean 中的 View 和 Request 范围之间的区别
Posted
技术标签:
【中文标题】托管 bean 中的 View 和 Request 范围之间的区别【英文标题】:Difference between View and Request scope in managed beans 【发布时间】:2011-08-26 22:16:38 【问题描述】:视图范围是什么意思?谁能解释一下,以便我了解它与请求范围有何不同?
【问题讨论】:
【参考方案1】:@ViewScoped
bean 的寿命与 JSF 视图一样长。它通常以新的 GET 请求或导航操作开始,然后只要最终用户将视图中的任何 POST 表单提交给返回 null
或 void
的操作方法(并因此导航回到相同视图)。一旦刷新页面,或返回非null
字符串(甚至是空字符串!)导航结果,则视图范围将结束。
@RequestScoped
bean 的生命周期与 HTTP 请求的生命周期完全相同。因此,它将在每个请求结束时被丢弃,并在每个新请求时重新创建,从而丢失所有更改的属性。
@ViewScoped
bean 因此在需要跨 Ajax 请求记住(更改的)视图状态的支持 Ajax 的丰富视图中特别有用。 @RequestScoped
将在每个 Ajax 请求上重新创建,因此无法记住所有更改的视图状态。请注意,@ViewScoped
bean 不会像 @SessionScoped
bean 那样在同一会话中的不同浏览器选项卡/窗口之间共享任何数据。每个视图都有自己独特的@ViewScoped
bean。
另见:
How to choose the right bean scope? The benefits and pitfalls of@ViewScoped
【讨论】:
@sessionscope 特别是当它与浏览器中的选项卡共享会话时会产生很多问题。谢谢 BalusC。 @Makky:只是不要将@SessionScoped
用于请求范围或查看范围数据。另见***.com/questions/7031885/…以上是关于托管 bean 中的 View 和 Request 范围之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse Inidigo 中的注释声明托管 bean 和代码完成 [重复]