JSF 2 - @ViewScoped bean在请求之间存在于何处?

时间:2011-07-18 16:23:52

标签: java serialization jsf-2 scope managed-bean

我正在尝试更好地理解JSF 2中@ViewScoped bean的低级工作原理。服务器在请求之间保持视图范围的bean在哪里?我注意到我的视图范围的bean需要实现Serializable,所以它们必须被序列化到某个位置。

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

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

1 个答案:

答案 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