我知道t:saveState
允许请求范围 bean 的持续时间比请求范围允许的时间长,但比会话范围 bean 的时间短。您还可以t:saveState
在整个 bean 上使用。
所以我的问题是,如果您t:saveState
在整个 bean 上使用t:saveState
,与在会话范围中配置 Bean 相比,使用有什么优势?
另外,在什么条件下您会创建 bean 请求范围并使用 T:saveState 而不是使用 bean Session Scope?
谢谢
所引用的 bean<t:saveState>
将与视图一样存在。它与新的 JSF 2.0 视图范围的作用基本相同。
这在您处理数据时特别有用,只要您通过返回null
或void
操作方法与同一视图交互,这些数据就应该存在。如果您使用会话范围,那么多个视图(同一会话中的多个浏览器窗口/选项卡)都将共享相同的数据。当最终用户在多个浏览器选项卡/窗口中与页面交互并在它们之间切换时,这可能会产生不希望的副作用。在一个选项卡中完成的所有更改都将反映在另一个选项卡中。
会话范围绝对应该只用于真正的会话范围数据,例如登录用户、其偏好、语言等,这些数据可以在同一会话中的多个浏览器窗口/选项卡之间安全地共享。