1

我知道t:saveState允许请求范围 bean 的持续时间比请求范围允许的时间长,但比会话范围 bean 的时间短。您还可以t:saveState在整个 bean 上使用。

所以我的问题是,如果您t:saveState在整个 bean 上使用t:saveState,与在会话范围中配置 Bean 相比,使用有什么优势?

另外,在什么条件下您会创建 bean 请求范围并使用 T:saveState 而不是使用 bean Session Scope?

谢谢

4

1 回答 1

2

所引用的 bean<t:saveState>将与视图一样存在。它与新的 JSF 2.0 视图范围的作用基本相同。

这在您处理数据时特别有用,只要您通过返回nullvoid操作方法与同一视图交互,这些数据就应该存在。如果您使用会话范围,那么多个视图(同一会话中的多个浏览器窗口/选项卡)都将共享相同的数据。当最终用户在多个浏览器选项卡/窗口中与页面交互并在它们之间切换时,这可能会产生不希望的副作用。在一个选项卡中完成的所有更改都将反映在另一个选项卡中。

会话范围绝对应该只用于真正的会话范围数据,例如登录用户、其偏好、语言等,这些数据可以在同一会话中的多个浏览器窗口/选项卡之间安全地共享。

也可以看看:

于 2012-02-18T15:12:05.360 回答