3

我试图更好地理解@ViewScopedJSF 2 中 bean 的低级工作。服务器将视图范围的 bean 在请求之间保存在哪里?我注意到我的视图范围 bean 需要实现Serializable,因此它们必须序列化到某个位置。

任何人都可以解释这一点或提供解释它的文档链接吗?

我问这个问题是因为我可能在我的 webapp 中引入了与范围相关的缺陷。了解如何@ViewScoped工作将帮助我排除一些潜在的原因。

4

1 回答 1

7

@ViewScoped beans 存储在 UIViewRoot 的 viewMap 中:

UIViewRoot 是代表 UIComponent 树的根的 UIComponent。该组件将标记呈现为对 Ajax 请求的响应。它还充当组件树的根...

事实上,您可以自己访问这个 viewMap,并使用以下方法在其中填充值:

facesContext.getViewRoot().getViewMap()...

有关更多信息,请参阅 JSF API 文档:http: //javaserverfaces.java.net/nonav/docs/2.0/javadocs/javax/faces/component/UIViewRoot.html

于 2011-07-18T16:31:00.380 回答