我们最近从6.1迁移到WebSphere 7.0,并从JSF1.1升级到JSF1.2。每次会话到期并且通过浏览器提交任何内容时,我现在都会遇到异常:
Caused by: javax.faces.application.ViewExpiredException: viewId:/Foo/Bar.jsp - View /Foo/Bar.jsp could not be restored.
如何防止该错误?
编辑:它看起来像WAS 7.0 / JSF 1.2迁移问题,请参阅https://www.ibm.com/developerworks/forums/thread.jspa?threadID=332460&tstart=30(未提供答案)
BalusC在此解释为什么会发生javax.faces.application.ViewExpiredException: View could not be restored。但为什么以前没有发生过呢?在迁移之前,有几个应用程序正常运行。
答案 0 :(得分:2)
这对于JSF 1.2来说并不新鲜,也与Websphere没什么关系。
我的猜测是你以前有状态存储在客户端上,因此之前从未遇到过此异常。 JSF中的默认设置是在服务器上保存状态。您可以通过在web.xml中添加以下内容来明确询问客户端上的状态:
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
请参阅此问题以获得更详尽的答案:Why JSF saves the state of UI components on server?
答案 1 :(得分:0)
至少这就是我在JSF应用程序中处理会话过期的方式。
希望它有所帮助 史蒂芬