如何在JSP页面中将多维数组从Java请求变量复制到Javascript变量?
我需要获取多维数组的内容,作为保存在请求变量中的字符串[][]传入,并将其内容放入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=如何在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
如何将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);