2010-02-04 3 views
0

Я хочу нарисовать диаграмму на основе даты, полученной из базы данных, с помощью RPC.проблема gwt-RPC! Какова наилучшая практика использования gwt-RPC?

Но каждый раз я не могу получить результат. Моя функция rpc работает.

Я думаю, что это последовательность процесса.

ниже мой класс:

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

добавить более подробную информацию. С вашего вопроса нельзя понять реальную проблему. Что именно не работает? Вызывает ли это исключение? ... – Juri

+0

Когда я вызывал pContainer.aDate.get (0), он вызывает ошибку. Я положил 2 точки останова на pContainer.aDate.get (0) и еще один внутри функции RPC. Я узнал, что он запускает pContainer.aDate.get (0) 1st. , поэтому я не могу получить данные. – guaz

ответ

4

Поскольку GWT RPC является асинхронным, вы не знаете, если или когда это удастся. И более уместно для вашего кода, поскольку GWT RPC является асинхронным механизмом обратного вызова, его не похоже на синхронное или процедурное выполнение в линейном смысле, что «pContainer.SetaDate (result.aDate.get (1)); будет выполняться до «pContainer.aDate.get (0);» Вместо того, чтобы устанавливать свойство date на pContainer с успешным результатом вашего обратного вызова, передайте его как параметр новому методу, который генерирует содержимое вашей диаграммы. Просто отредактируйте все после вашего обратного вызова как этот новый метод и назовите его успешным, передав ему дату как arg.

Смежные вопросы