多个浏览器选项卡/ Windows和NUMBER_OF_VIEWS_IN_SESSION

时间:2011-11-26 12:05:17

标签: java jsf viewstate myfaces

我们正在开发一个应用程序,我们必须支持多个浏览器选项卡/窗口。 我们的设置:MyFaces 2.1,Spring,Orchestra

默认情况下,org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION设置为20.这意味着如果您在浏览器中打开21个选项卡,则第一个选项卡中的页面将停止工作 - 给定视图没有视图状态。

如果在第二个选项卡中打开2个选项卡并请求21个视图更新(即Ajax事件),则会发生同样的情况。然后在第一个选项卡中单击将生成相同的异常。

有解决方法吗?例如,是否可以将视图缓存绑定到会话范围?

1 个答案:

答案 0 :(得分:3)

client中将视图状态保存方法设置为server而不是web.xml

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>

这样,整个视图状态将被保存(当然是以序列化形式)在表单的隐藏输入字段中,而不是仅保存在会话中引用状态的视图状态ID。这样做的缺点是页面大小可能会增加,但如果您打开了部分视图状态保存(这应该是JSF 2.0中的默认设置),这不应该是一个主要问题。

另见: