Wicket 多选项卡 ajax 和页面序列化
Wicket multi-tab ajax & page serialization
我在 VMWare Horizon
上遇到 Wicket
和 Ajax
的严重问题。用户看到的是 ajax-链接没有按预期工作。确切地说:它们有效,但似乎作用于页面的旧版本。例如,当我有一个计数器时,它似乎确实处理了 ajax-更新,但该值从未增加。该值存储在 Model
中,所以我认为它与页面序列化有关。
我接着做了一个更简单的实验:在 Wicket-Exmaples(参见:http://www.wicket-library.com/wicket-examples/ajax/on-change-ajax-behavior)上有一个输入框。如果按 enter
,该值将提交到页面。这在一个浏览器选项卡中工作正常。
但是,如果我打开两个选项卡(通过在新选项卡中复制粘贴 url,我们将它们称为 A 和 B).我使用 enter 在选项卡 A 中提交了一个值。我刷新选项卡 B 并获取在选项卡 A.
中提交的值
发生这种情况的唯一方法似乎是他们阅读彼此的序列化页面。
如何防止这种行为?
ps。我用的是Wicket
版本6.19.0,wicket例子好像是运行6.x。
ps2。我在 Chrome.
中注意到了这种行为
这是因为两个选项卡在一个会话中工作。
在决定请求针对哪个会话时不考虑选项卡(因为服务器不知道它们)。
如果您使用两个浏览器而不是两个选项卡执行相同的操作,则效果会很好。
为防止出现这种情况,您应确保没有在同一页面上打开两个或更多选项卡(即具有相同的页面 ID)。
当发生这种情况时,您可以使用 https://github.com/apache/wicket/blob/2f3b357703df3fe5c49580b3c46d4fd231208474/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java 得到通知。只需执行 setResponsePage(getPage().getClass())
即可从新实例开始。
我在 VMWare Horizon
上遇到 Wicket
和 Ajax
的严重问题。用户看到的是 ajax-链接没有按预期工作。确切地说:它们有效,但似乎作用于页面的旧版本。例如,当我有一个计数器时,它似乎确实处理了 ajax-更新,但该值从未增加。该值存储在 Model
中,所以我认为它与页面序列化有关。
我接着做了一个更简单的实验:在 Wicket-Exmaples(参见:http://www.wicket-library.com/wicket-examples/ajax/on-change-ajax-behavior)上有一个输入框。如果按 enter
,该值将提交到页面。这在一个浏览器选项卡中工作正常。
但是,如果我打开两个选项卡(通过在新选项卡中复制粘贴 url,我们将它们称为 A 和 B).我使用 enter 在选项卡 A 中提交了一个值。我刷新选项卡 B 并获取在选项卡 A.
中提交的值发生这种情况的唯一方法似乎是他们阅读彼此的序列化页面。
如何防止这种行为?
ps。我用的是Wicket
版本6.19.0,wicket例子好像是运行6.x。
ps2。我在 Chrome.
这是因为两个选项卡在一个会话中工作。
在决定请求针对哪个会话时不考虑选项卡(因为服务器不知道它们)。
如果您使用两个浏览器而不是两个选项卡执行相同的操作,则效果会很好。
为防止出现这种情况,您应确保没有在同一页面上打开两个或更多选项卡(即具有相同的页面 ID)。
当发生这种情况时,您可以使用 https://github.com/apache/wicket/blob/2f3b357703df3fe5c49580b3c46d4fd231208474/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java 得到通知。只需执行 setResponsePage(getPage().getClass())
即可从新实例开始。