如何在会话销毁后使用viewcoped bean / viewmap生存(使用客户端保存)?

时间:2014-02-08 07:24:33

标签: jsf session myfaces view-scope

我正在使用 Myfaces 2.2进行客户端状态保存。我看到ViewScoped豆子&用户会话销毁后,存储在viewmap中的数据将丢失。 我开始知道,不确定它是否正确,这是预期的行为,但是在会话销毁后避免查看过期异常的方法是什么?

我的问题是我在一些不活动期后(比如20分钟后)很快就破坏了用户会话但是我希望在此之后(当使用客户端保存时),viewcope数据仍然存在,这样当用户在会话后回来时销毁,他不需要做页面刷新。我不知道为什么&这是如何实现的,但是用户可能正在忙着阅读网站的某些部分或者离开20分钟是非常正常的。当他回来时与打开的页面交互,如何在没有状态的情况下完成工作? 我认为这是任何公共网站的常见要求。

我认为内部使用的jsf视图状态不会丢失,如果我使用客户端状态保存(因为我的页面仍然有效),但是为什么那些视图范围的bean也被作为视图状态一起序列化到页面。

如果这是设计行为,是否有任何方法可以使视图作用域数据在会话到期后继续存在?

1 个答案:

答案 0 :(得分:0)

我从myfaces用户邮件列表中得到的答案:

即使在会话销毁后,

viewRoot.getAttributes() map也可用于保留视图结构化值。因此,不是将值存储到viewRoot.getViewMap(),而是存储在viewRoot.getAttributes()返回的映射中。但是,应注意确保存储的值是可序列化的。