我有一個文本區域和一個按鈕。當我在文本區域放置一些文本時(在粘貼瀏覽事件中,所有其他事件都被忽略)或者單擊一個按鈕,同一個調用通過文本區域的值更改處理程序發送到服務器,然後單擊該按鈕的處理程序。如果數據錯誤,服務器將引發異常,並以消息框的形式返回給客戶端。一個異步調用而不是兩個GWT
所以當我把一些數據放到文本區域並點擊一個按鈕時,出現兩個消息框。有沒有辦法讓這種情況下出現一個消息框?
一些代碼示例中的問題:
textArea.addValueChangeHandler(new ValueChangeHandler<String>() {
@Override
public void onValueChange(ValueChangeEvent<String> event) {
fireHandlers();
}
});
button.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
fireHandlers();
}
});
//............
private void fireHandlers() {
for (MyProcessHandler handler : myHandlersList) {
handler.handle();
}
}
//............
public static interface MyProcessHandler {
public void handle();
}
//............
addMyProcessHandler(new MyProcessHandler() {
@Override
public void handle() {
AsyncCallback<String[]> ac = new AsyncCallbackAdapter<String[]>() {
public void onSuccess(String[] data) {
//post processing
}
@Override
public void onFailure(Throwable throwable) {
super.onFailure(throwable);
}
};
RemoteCall.getMyService().getResultFromData(textArea.getData(), ac);
}
});
只需引入一個標誌來確保單個調用,如果fireHandlers執行了切換標誌,並且所有其他調用都將被忽略。在響應只是切換標誌回來。我還爲其中一個項目做了重複的請求過濾器,但這不是您的情況所必需的。 – 2013-02-12 10:26:09