仅针对多个帖子的第一篇帖子进行渲染:这可能吗?

时间:2012-07-03 11:31:00

标签: wicket

我们的用户从外部网站返回我们的网站,返回到用户离开我们网站时传递到外部网站的网址。返回我们的站点涉及状态更新,该更新将持久保存到应用程序的数据存储区。

我在返回我们的网站后实施了检查,这可以防止多次写入我们的数据存储,从而使操作具有幂等性。

典型的事件顺序是:

  1. 首次发布到我们的登陆网页(网页实例1正在构建)
  2. 首先通过检查(之前未处理的数据)
  3. 数据持久性开始(仍然在网页构造函数中)
  4. 我们登陆网页的第二篇文章(网页实例2正在构建),与第一篇文章位于同一会话和浏览器窗口中
  5. 第二篇文章未通过检查(数据已经或正在处理)
  6. 网页实例2构造函数完成(没有持久性到数据存储区)并向用户提供Web响应
  7. 网页实例1构造函数完成(在持久化到数据存储之后)
  8. 用户在浏览器中看不到页面实例1.
  9. 最终结果是,即使第二篇文章是在第一篇文章之后发布的,第二篇文章也会“更快地”完成给用户,而用户的Web浏览器会显示页面的实例2,而非实例1。

    我的问题是:

    • 有没有办法让第一个数据存储处理页面实例显示给用户(因此“扔掉”第二页实例)?
    • 如果是这样,可以不使用AJAX吗?

    我非常感谢任何帮助。

    我的开发环境

    • Web框架:Wicket 1.5.7
    • Java:1.6.0_33; Java HotSpot(TM)客户端VM 20.8-b03
    • 网络服务器系统: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(Build 201204101705)

1 个答案:

答案 0 :(得分:0)

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

参考我在问题中提出的我的事件顺序,第6步被替换为:

6.1如果正在处理数据,页面实例2会在每次等待后检查时反复等待。

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

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

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