我有一个移动web应用程序与单一视图index.xhtml。我仅使用POST请求动态更改此视图。基本上我所有的ViewScopedBean都是SessionScopedBean。我不知道这是否是移动web应用程序的最佳解决方案,但它是(动态更新看起来比重新加载整个新页面更快)。
在本地主机上一切正常,即使在生产中,当我使用远程服务器的ip访问移动web应用程序时也是如此。当我在动态视图中使用域名时,如果对post请求做一些事情,我得到了这个异常
javax.faces.application.ViewExpiredException: viewId:/index2.xhtml - View /index2.xhtml could not be restored.
我知道为什么这个异常发生,但我不知道为什么我的视图过期。我应该去哪里找?我可以把代码贴出来,但是太乱了
我找到了解决方案,但我不知道为什么会这样。
在我的bug动态视图中,我在一些css中有一个url(#{prom.imageUrl})
。在我的例子中,#{prom.imageUrl}
返回类似167.xxx.xxx.xxx:8080/User/images/image.jpg的东西。在这里,我有一个apache服务器在端口80上,它将地址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异常。但这一切都需要确认