我正在尝试更好地理解JSF 2中@ViewScoped
bean的低级工作原理。服务器在请求之间保持视图范围的bean在哪里?我注意到我的视图范围的bean需要实现Serializable
,所以它们必须被序列化到某个位置。
任何人都可以解释这个或提供解释它的文档的链接吗?
我在问这个问题,因为我可能已经在我的webapp中引入了与范围相关的缺陷。了解@ViewScoped
如何运作将有助于我排除一些潜在的原因。
答案 0 :(得分:6)
@ViewScoped bean存储在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