Wicket中的多个选项卡和页面到期6

时间:2014-02-06 20:28:42

标签: wicket

这个问题似乎已被提出,但唯一给出的答案完全没有用。参考:support for Multi Window wicket 6.x

我们多年来一直在内部成功运行Wicket 1.4应用程序。由于需要推进编译器目标以及其他原因,最终有必要迁移到v6。在此过程中,多窗口支持似乎已被完全弃用。以前,它在应用程序中与setAutomaticMultiWindowSupport(true)完美配合,但是wicket开发人员出于某种原因决定删除此支持。

问题是,如果有一个页面X和页面Y两个页面,则在同一浏览器的不同选项卡中打开(因此同一个用户会话),每个页面上都有一个Form组件(我们称之为FormX和FormY),用户首先提交FormX(添加到第X页,版本6),然后提交FormY(添加到第Y页,版本7),表单Y提交会导致页面过期错误。

尽管有上述答案,但即使将inmemoryCacheSize和maxSizePerSession都增加到令人发指的级别,这种行为仍然存在。

Wicket 6似乎偶尔会在后退按钮使用时偶然触发Page Expired错误,但这个问题对于我们的用户来说并不像多窗口支持那样有问题。

问题是,如果删除了setAutomaticMultiWindowSupport(),是否有任何规范的解决方法可以使此功能再次运行?感谢。

编辑:

我还想指出,这不是Wicket 6给我们迁移后的唯一问题;它只是最容易再现的。当用户按某些页面上的后退按钮时,我们也会遇到Page Expired错误。这几乎就像Wicket 6只在会话中维护一个页面一样,一旦渲染了另一个页面,就会清除前一页面。目前还不清楚Wicket是否提供了获取当前会话或页面存储状态的任何方法,因此这种清除是否实际发生是纯粹的假设。

2 个答案:

答案 0 :(得分:0)

Wicket 6仍支持多个浏览器窗口。 请创建一个快速入门,显示问题并将其附加到Jira问题。

答案 1 :(得分:0)

使用Wicket 6.19我们也遇到了同样的问题。有没有人找到解决方案?

我们的应用程序是通过电话呼叫客户进行订单,因此在处理第一个电话时有时会进行第二次调用,因此浏览器上会打开两个选项卡。

我们在一个选项卡上打开ModalWindow但在另一个选项卡上没有打开特定错误。该窗口具有启用了ajax的复选框和也是Ajax化的“确定/取消”按钮。单击这些控件一段时间,但几乎随机,它将失败“行为被拒绝接口调用”错误。在此之后单击对话框中的任何内容将重复该错误。

似乎两个页面实例的控件混合在一起,并且因为窗口没有显示在一个页面上(因此控件未启用或不可见),这最终会导致触发异常。

重写canCallListenerInterface以返回true既麻烦又掩盖了真正的问题 - 有没有人以更好的方式解决这个问题?