Wicket 能否同时处理同一会话中同一页面的两个请求?

发布于 2024-09-09 06:18:40 字数 137 浏览 3 评论 0原文

当我单击链接 1,然后在收到响应之前单击同一页面上的链接 2 时,我从 Wicket 收到“页面已过期”错误。 Wicket 概念上是否能够进行这样的并发处理?

有什么想法为什么 Wicket 会丢失会话(尽管它似乎驻留在 tomcat 上)?

When I click on link 1 and then, before the response was received, click on link 2 on the same page, I get a "Page Expired" error from Wicket. Is Wicket conceptional capable to do such a concurrent processing?

Any ideas why Wicket loses the session (it seems to reside on tomcat though)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

坦然微笑 2024-09-16 06:18:40

我自己回答这个问题:似乎 Wicket 在第一个链接点击仍在处理时处理第二个链接点击没有问题。我用下面的例子尝试过。

import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

public class ConcurrentClickPage extends WebPage {

    public ConcurrentClickPage() {
        final IModel<String> model = new Model<String>("initial");
        Label status = new Label("status", model);
        add(status);
        add(new Link("link1"){
            @Override
            public void onClick() {
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(ConcurrentClickPage.class.getName()).log(Level.SEVERE, null, ex);
                }
                model.setObject("link 1 clicked");
            }
        });
        add(new Link("link2"){
            @Override
            public void onClick() {
                model.setObject("link 2 clicked");
            }
        });
    }

}

以及相应的html页面:

<html>
  <body>
      <span wicket:id="status">text</span>
      <p>
          <a href="#" wicket:id="link1">Link 1 (deferred processing)</a><br/>
          <a href="#" wicket:id="link2">Link 2</a>
      </p>
  </body>
</html>

当我单击链接1并在等待链接1的响应时单击链接2时,一切都很好,并且没有收到“页面过期”错误。

To answer the question myself: It seems like Wicket has no problem to process a second link click while the first is still beeing processed. I tried it with the following example.

import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

public class ConcurrentClickPage extends WebPage {

    public ConcurrentClickPage() {
        final IModel<String> model = new Model<String>("initial");
        Label status = new Label("status", model);
        add(status);
        add(new Link("link1"){
            @Override
            public void onClick() {
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(ConcurrentClickPage.class.getName()).log(Level.SEVERE, null, ex);
                }
                model.setObject("link 1 clicked");
            }
        });
        add(new Link("link2"){
            @Override
            public void onClick() {
                model.setObject("link 2 clicked");
            }
        });
    }

}

And the corresponding html page:

<html>
  <body>
      <span wicket:id="status">text</span>
      <p>
          <a href="#" wicket:id="link1">Link 1 (deferred processing)</a><br/>
          <a href="#" wicket:id="link2">Link 2</a>
      </p>
  </body>
</html>

When I click on link 1 and click on link 2 while waiting on the response of link 1, everything is fine and I get no "page expired" error.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文