проблема gwt-RPC! Какова наилучшая практика использования gwt-RPC?

Я хочу нарисовать диаграмму на основе извлечения даты из базы данных с помощью 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);
   }

person guaz    schedule 04.02.2010    source источник
comment
добавить больше деталей. Из вашего вопроса невозможно понять суть проблемы. Что именно не работает? Выдает ли это исключение?...   -  person Juri    schedule 04.02.2010
comment
Когда я вызвал pContainer.aDate.get(0), он выдал мне ошибку. Я поставил две точки останова: одну на pContainer.aDate.get(0) и другую внутри функции RPC. Я узнал, что он запускает pContainer.aDate.get(0) 1st. поэтому я не могу получить данные.   -  person guaz    schedule 04.02.2010


Ответы (1)


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

person Community    schedule 25.03.2010