2017-08-31 3 views
0

Ich entwickle eine GWT-App und wenn der Benutzer auf die Schaltfläche klickt, Schalungsplatte mit Kontrollkästchen erscheinen soll. Diese Kontrollkästchen sollten mit einer Liste von Elementen aus dem asynchronen Dienst gefüllt werden. Aber wenn ich Formularfeld öffne, habe ich diese Ankreuzfelder nicht. Ich gedebuggt und sah, dass Ergebnis von meinem Service ist hier nicht pünktlich, aber später Liste ist voll .. Hier ist der Code:Warum nicht Asynchron-Service Check-Box Schalungsplatte füllen?

 @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); 

       } 
      }); 

     } 

Was mache ich falsch und warum meine Kontrollkästchen sind nicht gefüllt? Danke im Voraus.

EDIT: Wenn ich debuggen, ist diese Methode GWT_ACCESS_ROLE_SERVICE.findByUserId erscheint nach Formularfeld dargestellt wird. So Form Panel apperas und danach Debug geht auf diese meine Methode und macht all das Zeug.

+0

Sie sagen, Kontrollkästchen, aber ich nur sehen Ein Kontrollkästchen wird erstellt. – WLGfx

+0

Habe ich es, ich bb = new CheckBox() in foreach bewegt, aber wieder das gleiche .. – Atenica

Antwort

0

Es sollte so etwas wie dieses dann aussehen:

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 Modul werden diese Linien haben hinzugefügt:

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

Sie nichts hinzugefügt wurden Panel Form als die Checkbox hatte außer Reichweite geraten.

EDIT: hinzugefügt Protokollierung Ausgabeinformation

+0

Wieder das gleiche ... nichts zeigt auf Form Panel ... – Atenica

+0

ich in der Regel verwenden 'SimpleCheckBox' statt' CheckBox'. Überprüfen Sie außerdem, ob das Formularfenster mithilfe des Inspektors in Chrome oder Firefox zum Textkörper hinzugefügt wird. Fügen Sie eine Debugging-Ausgabe hinzu, um sicherzustellen, dass auch dieses bestimmte Codeelement erreicht wird. – WLGfx

+0

Ich werde es jetzt versuchen. – Atenica

0

Beachten Sie, dass Formpanel existieren implementieren ist HasOneWidget, also, wenn Sie versuchen, ein weiteres Widget Behälter geben wird es außer Kraft setzen

Verwandte Themen