0
當我點擊鏈接1,然後在收到響應之前,點擊同一頁面上的鏈接2,我得到Wicket的「Page Expired」錯誤。 Wicket conceptional能夠做這樣的併發處理嗎?Can Wicket可以同時處理同一會話中同一頁面的兩個請求嗎?
任何想法爲什麼Wicket失去了會話(它似乎駐留在tomcat上)?
當我點擊鏈接1,然後在收到響應之前,點擊同一頁面上的鏈接2,我得到Wicket的「Page Expired」錯誤。 Wicket conceptional能夠做這樣的併發處理嗎?Can Wicket可以同時處理同一會話中同一頁面的兩個請求嗎?
任何想法爲什麼Wicket失去了會話(它似乎駐留在tomcat上)?
要自己回答這個問題:看起來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的響應等待,一切都很好,我沒有得到任何「網頁過期「錯誤。