0

我们最近从 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.

我怎样才能防止这个错误?

  • 请求的结果呈现在与输入字段相同的页面上。
  • 我正在为页面使用会话范围的支持 bean。

编辑:看起来确实像 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 restore。但是为什么以前没有发生呢?在迁移之前,几个应用程序运行良好。

4

2 回答 2

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>

请参阅此问题以获得更详细的答案:为什么 JSF 将 UI 组件的状态保存在服务器上?

于 2011-10-31T16:29:42.967 回答
0

你检查过这个吗? 在 JBoss AS 5 中运行的 JSF Web 应用程序中处理“会话已过期”

至少这就是我在 JSF 应用程序中处理会话过期的方式。

希望它可以帮助史蒂文

于 2011-10-31T16:32:04.027 回答