我有一个带有单一视图index.xhtml的移动网络应用程序。我只使用POST请求动态更改此视图。基本上我的所有ViewScopedBean都是SessionScopedBean。我不知道它是否是移动网络应用程序的最佳解决方案,但它确实存在(动态更新看起来比重新加载整个新页面更快)。
当我使用远程服务器的ip访问移动webapp时,即使在生产环境中,一切都很好。当我在动态视图中使用域名时,如果对帖子请求执行某些操作,我会遇到此异常
javax.faces.application.ViewExpiredException: viewId:/index2.xhtml - View /index2.xhtml could not be restored.
我知道为什么会发生这种异常,但我不知道为什么我的观点已过期。我应该在哪里看?我可以发布我的代码,但它真的很乱。
答案 0 :(得分:0)
我找到了解决方案,我不确定为什么会这样。
在我的动态视图中,我在某些css中有一个url(#{prom.imageUrl})
。在我的情况下,#{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异常。但所有这些都需要得到证实。