2012-07-18 66 views
1

我不确定这是否可能。当你点击“提交”按钮时,似乎有一种方法可以做到这一点。Wicket - 进度/多标签更新

private Button getButton(String id) 
{ 
    return new AjaxButton(id) 
    { 
      private static final long serialVersionUID = 1L; 
      { 
       setEnabled(true); 
      } 

      @Override 
      protected void onSubmit(AjaxRequestTarget target, Form<?> form) 
      { 
       debug = "Beginning a process...."; 
       target.addComponent(debugLabel); 

       //Perform the first process 

       debug = "Beginning second process...."; 
       target.addComponent(debugLabel); 

       //Perform the second process 

       debug = "Finishing...."; 
       target.addComponent(debugLabel); 

       //Perform the third process 

       debug = "Done."; 
       target.addComponent(debugLabel); 
      } 
      @Override 
      protected void onError(AjaxRequestTarget target, Form form) 
      { 
       //NO-OP 
      } 
     }; 
    } 
} 

如果这是不可能的,是否有替代多个实时更新?我需要它,所以底部的更新中会有一个状态标签,告诉你在这一种方法中完成了多少进展。

回答

1

只需使用AjaxTimerBehavior,以便更新您的标签每1-2秒。

代码:

add(new AbstractAjaxTimerBehavior(Duration.seconds(1)) 
     { 
      @Override 
      protected void onTimer(AjaxRequestTarget target) 
      { 
       target.add(label); 
      } 
     }); 

显然,这种解决方案采用了哑AJAX投票,所以它只是建议使用它在Intranet或其他低流量的网站。

2

您将不得不启动您想在另一个线程中收到通知的进程。然后,您可以更新用户会话,并提供有关状态的信息,这些信息将由一些ajax行为绑定到标签来定期检查。

在检票口6,你也可以使用WebSocketBehavior

+0

对不起,你失去了我。你能在代码中提供一个简单的例子吗? – 2012-07-18 20:32:32

+0

当我回家时(几个小时),我会给你一个。你使用哪一个Wicket版本? – 2012-07-19 09:25:54

+0

不确定。我在Eclipse中引用了wicket-1.4.17.jar作为我的一个库。 – 2012-07-19 12:00:25