我在Gwt中發現了這個非常奇怪的行爲。爲什麼私有內部類中的變量無法獲取Gwt中AsynCallback方法中具有值的私有變量的值?
我有一個簡單的TestPresenter.java有2個按鈕。按鈕1從DB獲取數據並通過Asyncallback方法返回值。按鈕2將從私有內部類中檢索該值。現在
private String test1;
private String test2;
private AsyncCallback<GetArticleResult> getArticleCallback=new AsyncCallback<GetArticleResult>(){
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
loadingPresenter.hide();
}
@Override
public void onSuccess(GetArticleResult result) {
test1=result.getVal();
test2="123";
}
};
private class InlineHTMLContextMenuHandler implements ContextMenuHandler {
@Override
public void onContextMenu(ContextMenuEvent event) {
System.out.println(test1);
System.out.println(test2);
}
}
,我按一下按鈕1第一&它從數據庫中獲取數據,然後我按一下按鈕2.然後我得到的輸出:test1=Null; test2="123";
調試時的test1
節目真正的價值,而不是null
。對於test1
變量,如果我通常從方法訪問它,那麼它會很好,但如果從私有內部類訪問它,那麼我無法獲得它的價值。
有什麼不對?這太奇怪了?
什麼版本的GWT您使用的是?如果不是最新的,請嘗試升級。爲我解決了過去的一些問題。另外,如果不調試,您確定result.getVal()不爲null嗎?只需確保在onSuccess中放入println。 – geert3
我正在使用GwtP 2.4或2.5記不住 – Tum
是的,我確定它會返回一個值 – Tum