Javascript 将ArrayList传递给JQuery Flot

Javascript 将ArrayList传递给JQuery Flot,javascript,jquery,jsp,struts2,flot,Javascript,Jquery,Jsp,Struts2,Flot,下午好 英语不是我的母语,所以请耐心等待 我是[see tags]的初学者,有一个web应用程序,它可以收集日期和序列来进行sql查询,并将一些数据(度量值的值和度量值的日期)返回到Action doDrawFlot,在Action中,这些数据被格式化以填充flot图 我需要一个ArrayList并将其传递给Javascript以填充flot图。 此时此刻,我有我的行动: public InputStream inputStream; public String doDrawFlot(

下午好

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

我是[see tags]的初学者,有一个web应用程序,它可以收集日期和序列来进行sql查询,并将一些数据(度量值的值和度量值的日期)返回到Action doDrawFlot,在Action中,这些数据被格式化以填充flot图

我需要一个ArrayList并将其传递给Javascript以填充flot图。

此时此刻,我有我的行动:

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>  
没有帮到我

更新:

在@Raidri的请求下,两个控制台日志的输出:

控制台日志(响应):
1\u 202\u 503\u 10

console.log(d1):
[1,NaN][NaN,NaN][2,NaN][0,NaN][2,NaN][NaN,NaN][5,NaN][0,NaN][3,NaN][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"]]

请在成功回调函数的开头插入一个
console.log(response)
,在
$.plot()
调用之前插入一个
console.log(d1)
,然后将结果添加到您的答案中。@Raidri感谢您的评论,问题已更新。您的答案非常有用,但不处理数组。尽管如此,我还是能够通过对你的答案进行一些“变通”来正确地绘制我的数据。如果没有其他人用数组的方法回答,我会接受你的答案。再一次谢谢,谢谢雷德利。您的回答帮助我管理两个“Yaxis”,并正确显示数据与时间的关系。
d1 = response.split(';').map(function (datapoint) {
    return datapoint.split('_');
});

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