当前位置: 首页 > 知识库问答 >
问题:

关于Wicket页面id机制的见解

姬浩渺
2023-03-14

在过去的几周里,我读了很多留档和代码,但是对于一些特殊的问题,我仍然无法“连接”页面标识机制是如何工作的。让我概述一下情况。

在我的Wicket应用程序中,有两个页面在同一个会话中并行运行(两个监视器设置,我将它们称为“左”和“右”页面)。

我所理解的是以下几点:

  • Wicket的页面ID是会话唯一的。这样,例如,首先显示的左侧页面会获取id?0,正确的页面获取id?1.
  • 理论:如果要用“过时”的id刷新页面(参见上面的理论),反序列化是一种方法(至少我的调试尝试告诉我了这一点,但在Wicket代码的深处,不太容易看到发生了什么以及为什么)。这是正确的假设吗?我只能从id开始吗?0到id?3通过反序列化id为0的页面存储中保存的内容

现在是棘手的部分——我们的Wicket应用程序嵌入到OSGi环境中,页面上显示的组件实际上是在不同的捆绑包中实现的。因此,无论何时发生上述反序列化,结果都是一个很好的反序列化异常,因为Wicket无法再访问组件的类。使用wicketstuff osgi和依赖注入解决了这个问题。

只要我只使用一个窗口,一切都很好。这个页面的页面标识偶尔会增加,但是wicket能够处理一切。

当有两个页面时,会发生以下情况:

  1. 打开左边的页面。
  2. 操纵左边的页面。
  3. 打开正确的页面。
  4. 操纵正确的页面。
  5. 操纵左边的页面。

显然,现在wicket发现左页面的页面id必须“跳转”,在这个id跳转的过程中,id为0的旧页面需要反序列化。

我现在的问题如下:我对页面id机制如何工作的假设正确吗?这种反序列化是必要的还是可以避免的?这是否只是因为一些配置错误(如果您有具体问题,我可以提供进一步的配置细节)?为什么会这样?正如我所说,我试图深入研究该代码,但我希望更熟悉该代码的人能给出一些澄清。

共有1个答案

秦建元
2023-03-14

以下是Wicket指南相关章节的链接:

http://wicket.apache.org/guide/guide/versioningCaching.html

它详细解释了页面版本控制和涉及的不同部分。

如果您负担不起对页面进行序列化,可以使用此处描述的HttpSessionDataStore,它将页面保留在http会话中。如果你要走这条路线,也可以看看邮件列表中的这条邮件,因为它包含了需要避免的重要问题。

 类似资料:
  • 我正在将一个应用程序从旧版本的wicket迁移到wicket 8。一些页面工作正常(简单页面,如登录)。这些页面不使用扩展机制。当我访问具有该机制的页面时,该机制不起作用。我不知道这是否是一个bug,但我尝试了所有的方法,但没有找到解决方案。我正在使用wicket 8.0.0-M5(我知道这不是一个稳定的版本)。有人有同样的问题吗?这是我的代码: WerklijstPagexxx.html Wer

  • 页面置换机制 如果要实现页面置换机制,只考虑页替换算法的设计与实现是远远不够的,还需考虑其他问题: 哪些页可以被换出? 一个虚拟的页如何与硬盘上的扇区建立对应关系? 何时进行换入和换出操作? 如何设计数据结构以支持页替换算法? 如何完成页的换入换出操作? 这些问题在下面会逐一进行分析。注意,在实验三中仅实现了简单的页面置换机制,但现在还没有涉及实验四和实验五才实现的内核线程和用户进程,所以还无法通

  • 在我开发的一个应用程序上,我试图为应用程序的页面保留一个好的、可读的url。我从url开始,如下所示:http://somedomain.com/context/?param1=value getRequestCycle()。setResponsePage(新建其他页面(obj1、obj2、pageParameters) 在这里,目标1和目标2是初始化页面所需的对象。正如我从这篇文章中理解的那样,

  • 了解 Dreamweaver 中的动态页面。 您可以创建动态页面,以显示来自动态内容源(如数据库和会话变量)的信息。 还可以使用基于 Ajax 的框架(称为 Spry)创建显示和处理 XML 数据的动态页面。使用预置的 Spry 表单元素构建不需要全页面刷新的动态页面。

  • 我正在开发一个jQuery分页工具,当我让分页工作时,我看到了一个缺陷: 在桌面上有一行14个分页链接是可以的,但在移动设备上是不行的。因此,我想将一次可见页面的数量限制为5个(不包括next/prev按钮),并在到达第三个可见页面时进行更新,并更新分页中的可见页面 到目前为止,我已经编写了这个CodePen。我知道有插件可以为我做这件事,但我想避免在这个项目中使用插件。 HTML(正在分页的示例

  • 我从Wicket开始,正在做TDD(当然是使用WicketTester) 我在尝试使用标记继承创建公共布局时遇到了一个问题 我查看了包括这一个在内的在线示例。然而,这些示例没有提到如何测试父类。 问题是父类是抽象的。这意味着,无法实例化页面,它会抛出一个异常(这是理所当然的) 我曾想过使用mock或fake类将该类作为常规POJO进行测试,但之后我将无法测试抽象父类中的wicket组件 我考虑的另