多个浏览器选项卡/ Windows和NUMBER
我们正在开发一个应用程序,我们必须支持多个浏览器选项卡/窗口。 我们的设置:MyFaces 2.1,Spring,Orchestra
默认情况下,org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION设置为20.这意味着如果您在浏览器中打开了21个选项卡,则第一个选项卡中的页面停止工作 - 给定视图无视图状态。
如果您在第二个选项卡中打开2个选项卡并请求21个视图更新(即,Ajax事件),则会发生同样的情况。 然后在第一个选项卡中单击将生成相同的异常。
有没有解决的办法? 例如,是否可以将视图缓存绑定到对话范围?
在web.xml
中将视图状态保存方法设置为client
而不是server
。
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
这样,整个视图状态将被保存(当然是以序列化的形式)在表单的隐藏输入字段中,而不仅仅是引用会话状态的视图状态ID。 这有一个缺点,即页面大小可能会增加,但如果启用了部分视图状态保存(这应该是JSF 2.0中的默认值),则这不应该成为主要问题。