0

我们的应用程序使用 wicket 1.5.2,到目前为止,我们已经使用 ajax 构建了很多页面,这使得页面是有状态的。我们在日志中注意到 NotSerializableException [NSE] 但忽略了它,因为它并没有真正破坏任何功能。现在我们开始注意到多个选项卡/窗口场景中的 ajax 问题。

假设我有页面 A 有一些 ajax 行为和页面 B。我加载页面 A,右键单击链接并在新选项卡中打开页面 B。现在,当我单击页面 A 中的 ajax 链接时,它会尝试重新绘制同一页面 [A]。在尝试调试时,我注意到它正在尝试根据页面 id 查找页面,并且由于页面存储中不会出现相同的页面 [请记住,由于没有存储页面而导致 NSE] 它创建了新的实例页面并重新绘制相同。

我知道正确的做法是让序列化成功,但这对我们来说需要一些时间,因为我们必须重新审视所有已实现的组件以确保我们解决这些问题。有没有其他快速和(有点)好的解决方案?

另一种选择是使用无状态 ajax 组件 [Jolira?] 使页面无状态 - 我不知道这将如何公平,但会尝试。同时,如果有人解决了这个问题,请告诉我。

4

1 回答 1

0

这听起来可能很刺耳,但你真的应该修复你的代码。忽略异常通常是个坏主意。

Wicket 依赖于完全可序列化的页面来支持状态性。如果页面序列化失败,则无法保证 Wicket 的任何有关状态的功能都可以正常工作。对于您希望通过 AJAX 更新的页面部分(即组件和模型)尤其如此。

于 2012-09-30T08:53:18.780 回答