托管 Bean 中的“视图”和“请求”范围之间的差异



视图范围是什么意思?任何人都可以解释一下,以便我了解它与请求范围有何不同?

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

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

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

另请参阅:

  • 如何选择合适的豆类范围?
  • @ViewScoped的好处和陷阱

相关内容

  • 没有找到相关文章

最新更新