页面未序列化时Wicket Ajax问题

时间:2012-09-14 05:03:06

标签: java ajax serialization wicket

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

假设我有页面A有一些ajax行为和页面B.我加载了页面A,右键单击链接并在新选项卡中打开页面B.现在当我点击页面A中的ajax链接时,它会尝试重新绘制同一页面[A]。在尝试调试时,我注意到它正在尝试根据页面ID查找页面,因为页面存储中不会出现相同的内容[记得存在NSE,因为页面未存储]它会创建新的实例页面并重新绘制相同的内容。

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

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

1 个答案:

答案 0 :(得分:0)

听起来可能很苛刻,但你确实应该修复你的代码。忽略异常通常是一个坏主意。

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