0

我已经在这里询问过 @ViewScoped 托管 bean:

Commandlink 操作和@viewscoped 奇怪的行为

不幸的是,在有关 JSF 的书籍和文档中,我只有对 @ViewScoped 注释的提示,并且它的幕后机制并未公开。因此,在对我的 JSF bean 感到头疼之后,我对 Mojarra 2.1 进行了一些测试,我得到了一些新的(对我而言)奇怪的结果。

首先,对同一页面进行连续的 Get 请求,每次都会重新创建链接的 @ViewScoped 托管 bean。我本来希望连续发布到同一页面的行为相同,即托管 bean 在帖子之间存在并且不会再次创建。

当创建一个新的 @Viewscoped 托管 bean 时,并不意味着前一个被销毁。令人惊讶的是(对我来说)它仍然可以访问一段时间。我使用浏览器的后退按钮注意到了这一事实(我知道这是一个否否):我可以从一个应该“过期”的托管 bean 中检索一些详细数据,因为创建了一个具有不同过滤器数据的新 bean。

你能确认我的结果是正确的吗?我在哪里可以找到有关@ViewScoped 内部机制的信息而无需查看其代码?

谢谢菲利波

4

1 回答 1

1

我建议看一下 BalusC 的优秀文章“JSF 2.0 中的通信”,其中有一章讨论了为什么ViewScopedbean 有时表现得像RequestScoped一个(@ViewScoped 在标记处理程序中失败)。

于 2012-02-27T08:08:17.087 回答