2016-05-02 15 views
0

私は、テキストファイルのデータを配列に保存し、遅くGWTハイチャートにNumber型の配列として転送するアプリケーションを書いています。私は、ファイルから配列にデータを書き込むサーブレットを書いています。私はここで取り残されています。配列の内容をアプリケーションのクライアント部分に渡す方法がわかりません。これを行うためのすばやく簡単な方法はありますか?GWT RPC配列へのアクセス

私が書いたこのコード:

DataPointsImpl.java:

package com.pwste.gwt.server; 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.IOException; 

import com.google.gwt.user.server.rpc.RemoteServiceServlet; 
import com.pwste.gwt.client.DataPoints; 

public class DataPointsImpl extends RemoteServiceServlet implements DataPoints { 
    private static final long serialVersionUID = 1L; 

    @Override 
    public Number[] getDataPoints() throws IOException { 
    File dataFile = new File("points.txt"); 
    FileReader dataFileReader = new FileReader(dataFile); 
    BufferedReader dataBufferedReader = new BufferedReader(dataFileReader); 
    Number[] arrayNumber = new Number[10000]; 
    String dataString = dataBufferedReader.readLine(); 

    for (int i = 0; i < arrayNumber.length; i++) { 
     arrayNumber[i] = Integer.parseInt(dataString); 
     dataString = dataBufferedReader.readLine(); 
    } 
    dataBufferedReader.close(); 

    return arrayNumber; 
    } 
} 

DataPoints.java:

package com.pwste.gwt.client; 

import java.io.IOException; 

import com.google.gwt.user.client.rpc.RemoteService; 
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; 

@RemoteServiceRelativePath("dataPoints") 
public interface DataPoints extends RemoteService { 
    Number[] getDataPoints() throws IOException; 
} 

DataPointsAsync.java:

package com.pwste.gwt.client; 

import com.google.gwt.user.client.rpc.AsyncCallback; 

public interface DataPointsAsync { 
    void getDataPoints(AsyncCallback<Number[]> callback); 
} 
+0

すでにRPCを設定します。今すぐクライアント側で呼び出すだけで、受信した配列をチャートに渡す必要があります。 http://www.gwtproject.org/doc/latest/tutorial/RPC.html#invokeの例 – Tobika

+0

プライベートDataPoints dataPointsService = GWT.create(DataPoints.class);およびプライベートNumber [] dataTxtPointsを作成しました。 = new Number [10000]; 'クライアントサイドでは、arrayNumberからdataTxtPointsに値を渡す方法がわかりません。 – MarkTrait

+0

El Hossはちょうどあなたに例を示しました。あなたは 'onSuccess'メソッドで結果をdataTxtPoints変数に代入することができます – Tobika

答えて

1

あなたがする必要がありますon Async-Interface onを使用してください。クライアント側:

private DataPointsAsync dataPointsService = GWT.create(DataPoints.class); 

あなたはこの方法でサービスを使用することができます。

dataPointsService.getDataPoints(AsyncCallback<Number[]>(){ 

      @Override 
      public void onSuccess(Number[] result) { 
      // result contains the returning values 
      } 

      @Override 
      public void onFailure(Throwable caught) { 
      Window.alert("panic"); 
      } 
}); 
+0

しかし、arrayNumber配列からどのように値を取得できますか?'for(int i = 0; i MarkTrait

+0

dataTxtPointsがNumber []である限り、それを試してみます。しかし、numberで定義された配列が良い選択であるか、BigDecimalのようなものを使うべきかどうかはわかりません。 –

+0

さて、私はどこでミスをしたのか分かりました。あなたの助けに感謝します。 – MarkTrait