Session Wicket页面存储结果错误页面

Session Wicket页面存储结果错误页面,session,wicket,hazelcast,Session,Wicket,Hazelcast,我的wicket web应用程序有问题。我正在使用wicket 6.14。我不能确切地说问题是什么,但我可以描述问题 我正在使用一个自编的pagestore,它使用hazelcast。这些页面存储在wicket default sessioncache和hazelcast存储中。如果我重新启动Web服务器,页面将从hazelcast存储,因为我的Web服务器上的会话缓存中不再有任何内容 我在web应用程序上的流程如下所示: 转到我的页面并填写我的表格 我更进一步,转到第3页 我重新启动Web服务

我的wicket web应用程序有问题。我正在使用wicket 6.14。我不能确切地说问题是什么,但我可以描述问题

我正在使用一个自编的pagestore,它使用hazelcast。这些页面存储在wicket default sessioncache和hazelcast存储中。如果我重新启动Web服务器,页面将从hazelcast存储,因为我的Web服务器上的会话缓存中不再有任何内容

我在web应用程序上的流程如下所示:

  • 转到我的页面并填写我的表格
  • 我更进一步,转到第3页
  • 我重新启动Web服务器,然后单击“继续”进入第4页。该页面存储在hazelcase中,似乎一切正常
  • 我填写一些字段,然后单击“继续”进入第5页
  • 我填写另一张表格,然后单击“继续”,这里有一个验证错误
  • 我假设如下,因为我通过我的应用程序进行了测试和调试。重新启动Web服务器后,wicket在会话缓存中存储了错误的页面。在第5页,sessioncache存储了一个错误的页面,预期的页面与我想要的页面不同。在我的应用程序的另一个位置,我得到一个“组件已从页面中删除”错误。为什么我认为wicket在sessioncache中存储了错误的页面?因为在重新启动web应用程序后,我的页面ID会发生变化。我通常有如下网址:www.mysite.de/flow?1

    1是页面ID。通常我会在第一页找到类似www.mysite.de/flow?1的URL。www.mysite.de/flow?2第二页等。重新启动Web服务器后,url的ID不会改变,我认为此时页面错误地存储在会话缓存中

    很抱歉,我这里没有代码。但如果有人能描述一下pagestore和sessioncache在wicket中是如何工作的,这将对我有很大帮助


    编辑


    我测试了abit,似乎pageId没有进一步计算。会话类有一个名为nextPageId()的方法。调用此方法,但pageId相同。url中的页面ID始终相同。由于任何原因,重新启动Web服务器后,我的会话出现问题。它不再计算页面了。我无法验证这一点,但这可能就是问题所在

    在步骤3中,重新启动Web服务器并从第二个pagestore加载此页面。此页面已(重新)加载到默认页面存储中,其id与该页面相同,因为该页面已存在,因此id=3。您单击转到第4页,但由于重新启动,wicket开始重新计数,因此第4页变为第1页(id=1)。接下来是page gets id=2,然后是page id=3,它已经存在于pagestore中。事情变得一团糟。。你知道的。。轰


    如果这是您的问题,那么您可以构建自己的IRequestMapper,去掉这些数字,构建自己的集合。(从数据库或其他地方。)

    我意识到,重启后,我的PageID计数不正确。我总是停留在pageId=2上。我不知道为什么。我发现了错误。谢谢你的回复。我的代码有一个错误。我从会话存储中获得2次会话。然后会话实例被覆盖,我得到相同的页面2次。现在已经修好了。这不是wicket的错误。