在过去的几周里,我已经阅读了很多文档和代码,但是对于一些特殊的问题,我仍然无法“关联”页面ID机制的工作原理。让我描述一下情况。
在我的Wicket应用程序中,有两个页面并行运行在同一个会话中(双监视器设置,我将它们称为“左”和“右”页)
我的理解如下:
现在有了棘手的部分 - 我们的Wicket应用程序嵌入在OSGi环境中,页面上显示的组件实际上是在不同的包中实现的。因此,只要提到反序列化,结果就是一个很好的反序列化异常,因为Wicket无法再访问组件的类。使用wicketstuff-osgi和依赖注入解决了这个问题。
只要我只使用一个窗口,一切都很好。这个页面的页面ID有时会增加,但是wicket能够处理所有内容。
当有两页时,会发生以下情况:
显然现在wicket发现左页的页面ID必须“跳转”,并且在跳过ID为0的旧页面的过程中需要反序列化。
我现在的问题如下:我对页面ID机制的工作方式的假设是否正确?这种反序列化是必要的还是可以避免的?是否仅因为一些配置错误而发生(如果您有特定问题,我可以提供更多配置详细信息)?为什么会这样呢?就像我说的那样,我试着深入研究这段代码,但我希望能够对那些更熟悉它的人做一些澄清。
答案 0 :(得分:2)
以下是Wicket指南相关部分的链接:
http://wicket.apache.org/guide/guide/versioningCaching.html
它详细解释了页面版本控制和所涉及的不同部分。
如果您无法负担序列化页面的费用,则可以使用HttpSessionDataStore
描述的here来保持http会话中的页面。如果您要走这条路线,请查看邮件列表中的this email thread,因为它包含要避免的重要问题。