2016-05-02 11 views
0

Ich schreibe eine Anwendung, in der Daten aus einer Textdatei im Array gespeichert und später als Array des Typs Zahl in das Widget GWT Highcharts übertragen werden. Ich schrieb ein Servlet, das Daten aus einer Datei in ein Array schreibt, und ich stecke hier fest. Ich weiß nicht, wie ich den Inhalt des Arrays an den Client-Teil der Anwendung übergeben soll. Gibt es einen schnellen und einfachen Weg, dies zu tun?GWT RPC-Array-Zugriff

Dieser Code ist von mir geschrieben:

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

Sie bereits über die RPC einrichten. Jetzt müssen Sie es nur auf der Clientseite aufrufen und das empfangene Array an Ihre Diagramme übergeben. http://www.gwtproject.org/doc/latest/tutorial/RPC.html#invoke für ein Beispiel – Tobika

+0

Ich habe die 'private DataPoints dataPointsService = GWT.create (DataPoints.class);' und 'private Number [] dataTxtPoints erstellt = new Number [10000]; 'auf der Client-Seite, aber ich habe keine Ahnung, wie ich Werte von ArrayNumber an dataTxtPoints übergeben kann. – MarkTrait

+0

El Hoss hat Ihnen nur ein Beispiel gegeben .. in der 'onSuccess' Methode können Sie das Ergebnis der Variablen dataTxtPoints zuweisen – Tobika

Antwort

1

Sie müssen Verwenden Sie das Async-Interface an der Client-Seite:

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

können Sie den Dienst auf diese Weise verwenden:

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

Ok, aber wie kann ich Werte vom arrayNumber Array bekommen? 'für (int i = 0; i MarkTrait

+0

Ich würde das versuchen, solange DataTxtPoints eine Nummer [] ist. Aber ich bin mir nicht sicher, ob ein mit Zahl definiertes Array eine gute Wahl ist oder ob Sie etwas wie BigDecimal verwenden sollten. –

+0

Okay, jetzt kann ich sehen, wo ich einen Fehler gemacht habe. Vielen dank für Deine Hilfe. – MarkTrait