2017-08-31 89 views
0

我正在開發一個GWT應用程序,當用戶點擊按鈕時,應該出現帶有複選框的表單面板。這些複選框應該填充來自異步服務的項目列表。但是當我打開表單面板時,我沒有這些複選框。我調試,看見我的服務,結果不按時來,但後來名單已滿.. 下面是代碼:爲什麼異步服務不填充複選框表單面板?

 @Override 
     public void createBody() { 


      GWT_ACCESS_ROLE_SERVICE.findByUserId(null, currentSession.getSelectedAccount().getId(), userId, new AsyncCallback<PagingLoadResult<GwtAccessRole>>() { 

       @Override 
       public void onFailure(Throwable caught) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void onSuccess(PagingLoadResult<GwtAccessRole> result) { 
        lista = result.getData(); 
        for (GwtAccessRole gwtAccessRole : lista) { 
        bb = new CheckBox(); 
         bb.setBoxLabel(gwtAccessRole.getRoleName()); 
        } 
        FormPanel roleFormPanel = new FormPanel(FORM_LABEL_WIDTH); 
        roleFormPanel.add(bb); 

        bodyPanel.add(roleFormPanel); 

       } 
      }); 

     } 

什麼我做錯了,爲什麼我的複選框未填寫?提前致謝。

編輯:當我調試時,此方法GWT_ACCESS_ROLE_SERVICE.findByUserId顯示後,窗體面板出現。所以Form Panel的外觀和之後,調試去這個我的方法,並做所有的東西。

+0

你說的複選框,但我只看到一個複選框正在創建。 – WLGfx

+0

我改變了它,我把bb = new CheckBox()轉換成了foreach,但是再次相同。 – Atenica

回答

0

它應該是這個樣子,那麼:

import java.util.logging.Logger; 

final Logger log = Logger.getLogger("LOG OUTPUT"); 

@Override 
public void onSuccess(PagingLoadResult<GwtAccessRole> result) { 

    if (result == null) { 
     log.info("No data from the server"); 
     return; 
    } 

    lista = result.getData(); 

    FormPanel roleFormPanel = new FormPanel(FORM_LABEL_WIDTH); 

    for (GwtAccessRole gwtAccessRole : lista) { 
     bb = new CheckBox(); 
     bb.setBoxLabel(gwtAccessRole.getRoleName()); 
     roleFormPanel.add(bb); 

     // display on the JS console output 
     log.info("CheckBox added to roleFormPanel"); 
    } 

    bodyPanel.add(roleFormPanel); 

    // confirm panel being added 
    log.info("Panel added to body"); 
} 

.gwt.xml模塊會有這些行補充說:

<inherits name="com.google.gwt.logging.Logging"/> 
<set-property name="gwt.logging.enabled" value="TRUE"/> 

你沒有添加任何的形式面板的複選框有超出了範圍。

編輯:添加日誌輸出信息

+0

再次相同...沒有在窗體面板上顯示... – Atenica

+0

我通常使用'SimpleCheckBox'而不是'CheckBox'。同時檢查您的表單面板是否正在使用Chrome或Firefox中的檢查器添加到正文中。添加一些調試輸出以確保它也達到特定的一段代碼。 – WLGfx

+0

我現在就試試。 – Atenica

0

注意FormPanel中是實現HasOneWidget,所以如果你試圖把一個更小工具,容器,它將覆蓋它