2010-07-14 18 views

Répondre

2

Pour répondre à la question moi-même: Il semble que Wicket n'a aucun problème à traiter un deuxième clic de lien alors que le premier est encore en cours de traitement. Je l'ai essayé avec l'exemple suivant.

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"); 
      } 
     }); 
    } 

} 

Et la page html correspondant:

<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> 

Lorsque je clique sur le lien 1 et cliquez sur le lien 2 en attendant la réponse du lien 1, tout va bien et je reçois pas « la page a expiré " Erreur.