JSF 2.0 - ViewScope和SessionScope的优势?

时间:2011-12-08 21:13:44

标签: jsf

如果有人能帮助我理解,当我们将SessionBean注入其中时,ViewScoped bean的优势是什么呢?

我们还能节省会话内存的使用吗?

如果我们只使用带有SessionBean的SessionScoped bean或ViewScoped bean,我相信会话内存占用没有区别。

为什么在使用SessionScoped bean实现所有目标时,我们都会遇到使用View和Session scoped bean的麻烦。

谢谢, Sundeep

2 个答案:

答案 0 :(得分:6)

当您需要将数据保留为一个页面然后在导航到另一个页面时将其销毁时,这是一种非常常见的情况。这使得@ViewScoped bean成为合理的选择。 @SessionScoped托管bean将保留会话中的所有数据。那么,当不再需要数据时,为什么会污染会话映射?

另请注意,@ViewScoped注释在CDI中不可用。因此,如果你使用带有@Named注释(而不是@ManagedBean)的bean,那么你就不走运了。但是,有一些替代方案。

答案 1 :(得分:2)

当您在会话中放置所有内容时,您正在使用更多内存。会话在35分钟后或默认情况下通常会过期。

切换视图后,可以使用Viewscoped bean进行垃圾回收。

对于较小的物体,它在较小的应用中可能并不重要。但是,如果您在会话中存储数据库的返回值,则必须关心已用完的内存。