Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JSP页面中将多维数组从Java请求变量复制到Javascript变量?_Javascript_Arrays_Jsp_Multidimensional Array - Fatal编程技术网

如何在JSP页面中将多维数组从Java请求变量复制到Javascript变量?

如何在JSP页面中将多维数组从Java请求变量复制到Javascript变量?,javascript,arrays,jsp,multidimensional-array,Javascript,Arrays,Jsp,Multidimensional Array,我需要获取多维数组的内容,作为保存在请求变量中的字符串[][]传入,并将其内容放入Javascript变量中 “String[][]dataArray”变量保存我期望的值。例如: dataArray[0][0]=“Joe” 数据数组[0][1]=“Smith” 数据数组[0][2]=“901-555-1212” dataArray[1][0]=“Jane” dataArray[1][1]=“Smith” 数据数组[1][2]=“901-555-9999” 这不起作用: Java setAttri

我需要获取多维数组的内容,作为保存在请求变量中的字符串[][]传入,并将其内容放入Javascript变量中

“String[][]dataArray”变量保存我期望的值。例如:

dataArray[0][0]=“Joe”

数据数组[0][1]=“Smith”

数据数组[0][2]=“901-555-1212”

dataArray[1][0]=“Jane”

dataArray[1][1]=“Smith”

数据数组[1][2]=“901-555-9999”

这不起作用:

Java

setAttribute(“passedInArray”,dataArray)

Javascript(JSP页面内部)

var jsArray=


如何将PassedArray的内容获取到jsArray中?提前谢谢

如果需要使用
字符串[][]
,则需要在服务器端的
passedArray
中迭代行

var dataArray = new Array();

<c:forEach var="row" items="${passedInArray}">
    dataArray.push(['${row[0]}', '${row[1]}', '${row[2]}']);
</c:forEach>

无论您如何操作,都需要在服务器端进行工作,将java数组转换为javascript可以直接使用的字符串。

我会使用JSON库将其转换为字符串,并将其分配给jsArray,如
var jsArray=[[“Joe”、“Smith”、“901-555-1212”]、[“Jane”、“Smith”、“901-555-9999”]
因为JavaScript可以在本机读取这些内容。有一个可用库的列表。我不熟悉JSON。学习需要很长时间吗?一点也不需要,特别是当您使用库时,您甚至不需要理解JSON本身。基本上,这是一种序列化具有嵌套hashmap/数组结构的数据的方法。因此,您可以在Java端对其进行序列化,并使用JavaScript对其进行反序列化。JSON代表J ava S Script O Object N otation,它表示Javascript可以以本机方式读取序列化字符串。javax.el.PropertyNotFoundException:在java.lang.StringType上找不到属性“0”。是否确定使用的
passedArray
string[]
而不是
string[]
?是的。但出于某种原因,这种情况实际上已经不再发生了。但是,dataArray现在只返回两个“行”。我输入了如下调试代码:console.log(“passedInArray rowSize=“+passedInArray.length”);console.log(“passedInArray colSize=“+passedInArray[0].length”);行大小显示1767,这是我所期待的。colSize显示的是2,这不对。我应该嵌套标签吗?如果是的话,我会怎么做?我知道我真的很快就能把这件事做好……谢谢!:)我的错误-在我的示例中,我将行限制为每个行2个元素。我将其编辑为使用3列,并添加了一个JSON序列化示例。
    StringBuffer sb = new StringBuffer("[");
    for (int i = 0; i < dataArray.length; i++) {
        sb.append("[");
        for (int j = 0; j < dataArray[i].length; j++) {
            sb.append("'" + dataArray[i][j] + "'");
            if (j < dataArray[i].length-1)
                sb.append(',');
        }
        sb.append("]");
        if (i < dataArray.length-1)
            sb.append(',');
    }       
    sb.append("]");
    request.setAttribute("passedInArray", sb.toString());
    var dataArray = ${passedInArray};
    console.log(dataArray.length);
    console.log(dataArray[0].length);