【问题标题】:GWT RPC array accessGWT RPC 数组访问
【发布时间】:2016-05-02 07:57:42
【问题描述】:

我正在编写一个应用程序,其中来自文本文件的数据被保存到数组中,然后作为 Number 类型的数组传输到小部件 GWT Highcharts。我编写了一个 servlet,将文件中的数据写入数组,但我被困在这里。我不知道如何将数组的内容传递给应用程序的客户端部分。有没有快速简便的方法来做到这一点?

这段代码是我写的:

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);
}

【问题讨论】:

  • 您已经设置了 RPC。现在您只需在客户端调用它并将接收到的数组传递给您的图表。以gwtproject.org/doc/latest/tutorial/RPC.html#invoke 为例
  • 我在客户端创建了private DataPoints dataPointsService = GWT.create(DataPoints.class);private Number[] dataTxtPoints = new Number[10000];,但我不知道如何将值从arrayNumber 传递到dataTxtPoints。
  • El Hoss 刚刚给了你一个例子.. 在onSuccess 方法中,你可以将结果分配给你的 dataTxtPoints 变量

标签: java arrays gwt gwt-rpc gwt-highcharts


【解决方案1】:

您必须在客户端使用异步接口:

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");
          }
});

【讨论】:

  • 好的,但是如何从 arrayNumber 数组中获取值? for (int i = 0; i &lt; dataTxtPoints.length; i++) { dataTxtPoints[i] = result[i]; } 或类似的东西?
  • 只要 dataTxtPoints 是 Number[],我会尝试一下。但我不确定用 number 定义的数组是否是一个不错的选择,或者您是否应该使用 BigDecimal 之类的东西。
  • 好的,现在我可以看到哪里出错了。非常感谢您的帮助。
猜你喜欢
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
相关资源
最近更新 更多