我在我的GWT應用程序中有一個Previous按鈕,我附加了一個事件處理程序,它調用了History.back()。GWT History.back()沒有觸發onValueChangeHandler
eventBus.addHandler(PrevEvent.TYPE, new PrevEventHandler() {
public void onNext(PrevEvent prevEvent) {
History.back();
System.out.println("Token is" +History.getToken());
}
});
當事件被觸發,我可以看到URL標記在瀏覽器中被改變,但History.getToken()是印刷近期令牌本身。 對於例如,如果爲了#A加入令牌,#B,#C,當我點擊以前當我在#C網址更改爲#B,但爲gettoken表示,其#C。 我認爲這是導致沒有呼叫onValueChange方法的問題,因此我的應用程序保持不變。
當我嘗試使用瀏覽器的後退按鈕時觀察到同樣的情況。我使用的是Firefox,但在其他瀏覽器中的行爲沒有什麼不同。
可能是什麼原因?
我的看法是,History.back()也會觸發onValueChange(),現在似乎只有History.newItem()會做能夠做的工作,然後。糾正我,如果我錯了。我很困惑。我如何處理以前的按鈕事件呢?
eventBus.addHandler(PrevEvent.TYPE, new PrevEventHandler() {
public void onNext(PrevEvent prevEvent) {
History.back();
System.out.println("Token is" +History.getToken());
doPrev();
}
});
private void doPrev(){
System.out.println("Calling Previous Method");
}
在我的應用程序的某處,我的代碼與當前歷史令牌#Step3激發了以前的事件。因此,當涉及到以前的事件,我執行History.back(),我希望令牌是回到#第二步和我有onValueChange方法就是這樣,
public void onValueChange(ValueChangeEvent<String> event) {
String token = event.getValue();
if(token != null){
presenter = null;
if(token == "step1")
{
System.out.println("Step 1");
//do Something
}
else if(token == "step2")
{
System.out.println("Step 2");
//do Something
}
else if(token == "step3")
{
System.out.println("Step 3");
//do Something
}
感謝您的答覆。儘管我嘗試瞭解決方案時遇到了問題,但是如果History.back()需要太多時間來執行,並且在執行之後執行後續步驟,那麼您認爲對於此問題可行的解決方案是什麼? – Napster 2012-07-10 10:50:24
你的問題到底是什麼?歷史不會觸發valueChangeEvent? – cardamo 2012-07-11 03:09:01
準確地說,History.back()不會觸發valueChangeEvent! – Napster 2012-07-11 04:22:40