【问题标题】:Wicket pagestore results wrong pageWicket pagestore 结果错误页面
【发布时间】:2014-05-20 20:25:18
【问题描述】:

我的 Web 应用程序与 wicket 存在问题。我正在使用检票口 6.14。我不能确切地说出问题是什么,但我可以描述问题。

我正在使用一个使用 hazelcast 的自写页面存储。这些页面存储在 wicket 默认 sessioncache 和 hazelcast 存储中。如果我重新启动我的网络服务器,页面将从 hazelcast 存储,因为我的网络服务器上的会话缓存中没有任何内容了。

我通过以下方式在我的网络应用程序上完成我的流程:

  1. 转到我的页面并填写我的表格
  2. 我更进一步,转到第 3 页
  3. 我重新启动了我的网络服务器,然后单击继续转到第 4 页。该页面是从 hazelcase 存储的,一切似乎都可以正常工作。
  4. 我填写了一些字段,然后单击继续到第 5 页
  5. 我填写了另一个表单并单击继续,“这里出现验证错误”

我假设如下,因为我通过我的应用程序进行了测试和调试。在我的网络服务器重新启动后,检票口将错误的页面存储在会话缓存中。在第 5 页,从 sessioncache 中存储了一个错误的页面,而预期的页面与我想要的不同。在我的应用程序的另一个位置,我收到“组件已从页面中删除”错误。为什么我认为 wicket 在 sessioncache 中存储了错误的页面?因为在我的 web 应用程序重新启动后,我的页面的 id 发生了变化。我通常有这样的网址:www.mysite.de/flow?1

1 是 pageid。通常我会在第一页获得像 www.mysite.de/flow?1 这样的网址。 www.mysite.de/flow?2 第二页等等。重新启动我的网络服务器后,我的 url 的 ID 没有改变,我认为此时页面被错误地存储到会话缓存中。

对不起,我这里没有代码。但是,如果有人可以描述页面存储和会话缓存在检票口中的工作方式,它将对我有很大帮助。


编辑

我测试了升技,似乎 pageId 没有进一步计算。 Session 类有一个名为 nextPageId() 的方法。调用此方法,但 pageId 相同。 url 中的 pageId 始终相同。出于任何原因,在我的网络服务器重新启动后,我的 Session 出现了问题。它不再计算页数了。

【问题讨论】:

    标签: session wicket hazelcast


    【解决方案1】:

    我无法验证这一点,但也许这可能是问题所在。

    在第 3 步,您重新启动网络服务器并从您的第二个页面存储加载此页面。此页面(重新)加载到默认页面存储中,其 id 相同,因为该页面已经存在,因此 id = 3。您单击转到第 4 页,但由于重新启动,检票口开始重新计数,因此第 4 页变为第 1 页( id = 1)。接下来是页面获取 id = 2,然后你得到页面 id = 3,它已经存在于你的页面存储中。事情变得一团糟,而且.. 你知道.. 繁荣。

    如果这是您的问题,那么您可以构建自己的 IRequestMapper 并摆脱数字并构建自己的集合。 (来自数据库或其他东西。)

    【讨论】:

    • 我认识到,重启后我的 pageIds 没有被正确计算。我总是停留在 pageId=2 上。我不知道为什么。
    • 我发现了错误。谢谢您的答复。我的代码有错误。我从会话存储中获得了 2 次会话。然后会话实例被覆盖,我得到相同的页面 2 次。现在它是固定的。这不是检票口的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多