2010-07-14 35 views

回答

2

要自己回答這個問題:看起來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,點擊鏈接2,而在連接1的響應等待,一切都很好,我沒有得到任何「網頁過期「錯誤。

相關問題