0

我有一个带有单个视图 index.xhtml 的移动 webapp。我仅使用 POST 请求动态更改此视图。基本上我所有的 ViewScopedBean 都是 SessionScopedBean。我不知道它是否是移动 webapp 的最佳解决方案,但它确实存在(动态更新看起来比重新加载一个全新的页面要快)。

在本地主机上一切都很好,即使在生产中当我使用远程服务器的 ip 访问移动 web 应用程序时也是如此。当我在动态视图中使用域名时,如果对发布请求执行某些操作,则会出现此异常

  javax.faces.application.ViewExpiredException: viewId:/index2.xhtml - View /index2.xhtml could not be restored.

我知道为什么会发生此异常,但我不知道为什么我的视图已过期。我应该去哪里看?我可以发布我的代码,但它真的很乱。

4

1 回答 1

0

好吧,我找到了解决方案,我不确定为什么会发生。

在我的错误动态视图中,我有url(#{prom.imageUrl})一些 css。在我的情况下#{prom.imageUrl} ,返回类似 167.xxx.xxx.xxx:8080/User/images/image.jpg 的内容。所以这里的事情,我在端口 80 上有一个 apache 服务器,它将地址 domain.com 重定向到 167.xxx.xxx.xxx:8080/User/。当我通过 167.xxx.xxx.xxx:8080/User 继续这个动态视图时,一切都很好,但如果我通过 domain.com 访问视图,我的会话将被重置!我的猜测是将此#{prom.imageUrl}调用称为与 167.xxx.xxx.xxx:8080/User/ 的连接,并且由于服务器认为这是第一个连接(因为我是通过 domain.com 连接的),所以他创建了一个新会话,然后我得到了viewexpired 异常。但这一切都需要得到证实。

于 2015-08-19T14:58:49.197 回答