2010-02-04 14 views
0

Je veux dessiner un graphique basé sur la date de récupération de la base de données en utilisant RPC.problème gwt-RPC! Quelle est la meilleure pratique pour utiliser gwt-RPC?

Mais chaque fois que je ne parviens pas à obtenir le résultat. Ma fonction rpc fonctionne.

Je pense que c'est la séquence du processus.

ci-dessous est ma classe:

public class TrafficPattern_1 extends GChart { 


     TrafficPattern_1() { 

     final DBServiceAsync dbService = GWT 
     .create(DBService.class); 

     dbService.SendData(null, null, 
       new AsyncCallback<Container_TrafficPattern>() { 

        @Override 
        public void onFailure(Throwable caught) { 

        } 

        @Override 
        public void onSuccess(Container_TrafficPattern result) { 
         // TODO Auto-generated method stub 

         pContainer.SetaDate(result.aDate.get(1)); 
        } 
       }); 

     pContainer.aDate.get(0); 
    setChartSize(350, 200); 
     setChartTitle("<h2>Temperature vs Time<h2>"); 
     setPadding("8px"); 
     //setPixelSize(380, 200); 

     getXAxis().setAxisLabel("<small><b><i>Time</i></b></small>"); 
     getXAxis().setHasGridlines(true); 
     getXAxis().setTickCount(6); 
     // Except for "=(Date)", a standard GWT DateTimeFormat string 
     getXAxis().setTickLabelFormat("=(Date)h:mm a"); 

     getYAxis().setAxisLabel("<small><b><i>&deg;C</i></b></small>"); 
     getYAxis().setHasGridlines(true); 
     getYAxis().setTickCount(11); 
     getYAxis().setAxisMin(11); 
     getYAxis().setAxisMax(16); 

     addCurve(); 
     getCurve().setLegendLabel("<i> </i>"); 
     getCurve().getSymbol().setBorderColor("blue"); 
     getCurve().getSymbol().setBackgroundColor("blue"); 
     // getCurve().getSymbol().setFillSpacing(10); 
     // getCurve().getSymbol().setFillThickness(3); 

     getCurve().getSymbol().setSymbolType(SymbolType.LINE); 
     getCurve().getSymbol().setFillThickness(2); 
     getCurve().getSymbol().setFillSpacing(1); 

     for (int i = 0; i < dateSequence.length; i++) 
      // Note that getTime() returns milliseconds since 
      // 1/1/70--required whenever "date cast" tick label 
      // formats (those beginning with "=(Date)") are used. 
      getCurve().addPoint(dateSequence[i].date.getTime(), 
           dateSequence[i].value); 
    } 
+0

ajouter plus de détails. De votre question, on ne peut pas comprendre le problème réel. Qu'est-ce qui ne fonctionne pas exactement? Est-ce qu'il lance une exception? ... – Juri

+0

Quand j'ai appelé le pContainer.aDate.get (0), il m'a demandé une erreur. J'ai mis 2 breakpoint un sur pContainer.aDate.get (0) et un autre dans la fonction RPC. J'ai découvert qu'il fonctionne pContainer.aDate.get (0) 1er. donc je ne peux pas obtenir les données. – guaz

Répondre

4

Depuis GWT RPC est asynchrone, vous ne savez pas si ou quand il réussirez. Et plus pertinent pour votre code puisque GWT RPC est un mécanisme de rappel asynchrone, ce n'est pas comme l'exécution synchrone ou procédurale dans le sens linéaire que "pContainer.SetaDate (result.aDate.get (1));" s'exécuterait avant "pContainer.aDate.get (0);" Plutôt que de définir une propriété date sur pContainer avec le résultat réussi de votre rappel, passez-le en tant que paramètre à une nouvelle méthode qui génère le contenu de votre graphique. Simplement refactoriser tout après votre rappel comme cette nouvelle méthode et l'appeler en cas de succès, en lui passant la date comme un argument.

Questions connexes