Wicket 仅针对多篇文章中的第一篇文章进行呈现:这可能吗?

Wicket 仅针对多篇文章中的第一篇文章进行呈现:这可能吗?,wicket,Wicket,我们的用户从外部站点返回到我们的web站点,返回到一个URL,该URL在用户离开我们的站点时传递到外部站点。返回到我们的站点需要一个状态更新,该更新会持久保存到应用程序的数据存储中 我在返回我们的网站时实现了一个检查,这可以防止对数据存储的多次写入,从而使操作幂等 事件的典型顺序是: 第一次发布到我们的登录网页(网页实例1正在构建) 第一次post通过检查(之前未处理数据) 数据持久性开始(仍在网页构造函数中) 登录网页的第二篇文章(正在构建网页实例2),它与第一篇文章位于同一会话和浏览器窗口中

我们的用户从外部站点返回到我们的web站点,返回到一个URL,该URL在用户离开我们的站点时传递到外部站点。返回到我们的站点需要一个状态更新,该更新会持久保存到应用程序的数据存储中

我在返回我们的网站时实现了一个检查,这可以防止对数据存储的多次写入,从而使操作幂等

事件的典型顺序是:

  • 第一次发布到我们的登录网页(网页实例1正在构建)
  • 第一次post通过检查(之前未处理数据)
  • 数据持久性开始(仍在网页构造函数中)
  • 登录网页的第二篇文章(正在构建网页实例2),它与第一篇文章位于同一会话和浏览器窗口中
  • 第二次post检查失败(数据已经或正在处理)
  • Web页面实例2构造函数完成(没有数据存储的持久性)并向用户提供Web响应
  • 网页实例1构造函数完成(在持久化到数据存储后)
  • 用户在浏览器中看不到页面实例1
  • 最终结果是,即使第二篇文章是在第一篇文章之后发表的,第二篇文章对用户来说“完成”更快,并且用户的web浏览器显示页面的实例2,而不是实例1

    我的问题是:

    • 有没有办法让第一个数据存储处理页面实例显示给用户(从而“扔掉”第二个页面实例)
    • 如果是这样的话,不使用AJAX能做到这一点吗
    我将非常感谢任何帮助

    我的开发环境

    • Web框架:Wicket 1.5.7
    • Java:1.6.0!;Java热点(TM)客户端VM 20.8-b03
    • Web服务器系统:Google App Engine for Java 1.6.6版
    • 操作系统:Microsoft Windows XP Home Edition版本2002 SP3(在x86上运行的版本5.1;Cp1252;en_GB)
    • IDE:NetBeans IDE 7.1.2(构建201204101705)

      • 感谢@svenmeier提供的第一个提示。我的解决方案遵循这种方法。我决定让页面实例2在必要时反复等待,而不是按照@Carl EricMenzel的建议重定向

        关于我在问题中列出的事件顺序,第6步被以下内容取代:

        6.1如果已经在处理数据,页面实例2会重复等待,同时在每次等待后进行检查

        6.2在所有等待之后,页面实例1将完成步骤7(和8)。如果没有,则页面实例2完成构造

        6.3如果实例1的数据处理成功,则页面实例2向用户显示成功


        6.4如果实例1的数据处理失败,则页面实例2处理数据并将结果(成功/失败)显示给用户。

        您不能让页面实例2等待数据处理的结果吗?。。。e、 g.通过在应用程序的服务层中进行阻止?@svenmeier感谢您的提示。即使我们使用的是Google App Engine,我们也使用
        WebSession
        来保存数据处理检查数据。(针对相同内容的任何数据存储更新都将在同一个会话的上下文中进行。)我将研究修改并发检查的数据结构,看看这是否可以用于在两个页面实例(可能在单独的JVM上运行)之间交换有用的数据,这两个请求是否不在同一个会话中?这两个请求都应该重定向到结果页。第一次提交可以首先处理数据,第二次提交可以立即重定向。结果页应刷新自身,直到数据处理完成。