将 ArrayList 传递给 JQuery Flot

Pass ArrayList to JQuery Flot

下午好。

英语不是我的母语,所以请耐心等待。

我是 [see tags] 的初学者并且有一个网络应用程序收集日期和序列以进行 sql 查询和 return 一些数据(来自度量值和测量日期)到动作 doDrawFlot,在动作中,此数据被格式化以填充浮点图。

我需要一个 ArrayList<(String or Integer)> 并将其传递给 Javascript 以填充浮点图。

此刻我有我的Action:

public InputStream inputStream;

    public String doDrawFlot() {

        StringBuilder response = new StringBuilder();

        response.append("1_20");
        response.append("2_50");
        response.append("3_10");

        byte[] bArray = response.toString().getBytes();
        inputStream = new ByteArrayInputStream(bArray); 

        return SUCCESS;
    }  

Struts2 XML

<action name="GetProfile" class="com.raspberry.struts.action.PerfilCargaAction" 
        method="doDrawFlot">
    <interceptor-ref name="SessionValidationStack" />
    <result type="stream">
        <param name="contentType">text/html</param>
        <param name="inputName">inputStream</param>
    </result>            
</action>  

和 Javascript 文件:

$(document).ready(function () {
    //Re-load records when user click 'load records' button.
    $('#LoadRecordsButton').click(function (e) {
        $.ajax({
        type: 'POST',
        url: 'GetProfile?fechaPerfil='+$('#startDate').datepicker({ dateFormat: 'yyyy-mm' }).val()+'&meter=' + $('#meterList option:selected').text(),

        success: function (response) {
console.log(response);    //At request of @Raidri
            var servletResponse = response;

            var str = [];
            var num = [];
            var d1 = [];

            for (var i = 0, len = servletResponse.length; i < len; i++) {

                num.push(parseInt(servletResponse[i].split("_")[0])),
                str.push(parseInt(servletResponse[i].split("_")[1]));
                d1[i] = [num[i],str[i]];    
            }
console.log(d1);    //At request of @Raidri
            $.plot($("#placeholder"), [d1]);
        } 
        });       
        });
    $.plot($("#flotDiv"), [[]]);                
});

如您所见,数据不在 ArrayList 中,这是因为我正在使用输入流来传递数据客户端。

要像数组一样传递数据并在 flot 中正确格式化是绝对必要使用Json(或 Gson)?

或者我当前的构建可以完成这项工作?

任何想法(代码修复、POJO、新手的简单教程)或建议?

我正在使用 struts2 而 mykong tutorial 对我没有帮助。

更新:

应@Raidri 的要求,两个控制台日志的输出:

console.log(响应):1_202_503_10

console.log(d1) : [1,NaN][NaN,NaN][2,NaN][0,NaN][2, NaN][NaN,NaN][5,NaN][0,NaN][3,NaN][NaN,NaN][1,NaN][NaN,0]

流发送单个字符串,我需要一个数组,因为度量的长度可能会改变(即“102”或“0”)

如您所见,您的 d1 数组无效。并且您的原始数据字符串需要在数据点之间使用一些分隔符,例如

response.append("1_20;");
...

// response = "1_20;2_50;3_10"

然后我们可以使用 map() 函数来构建我们的数据数组,如下所示:

d1 = response.split(';').map(function (datapoint) {
    return datapoint.split('_');
});

// d1 = [["1", "20"], ["2", "50"], ["3", "10"]]