我需要获取多维数组的内容,将其作为保存在请求变量中的字符串 [][] 传入,并将其内容放入 Javascript 变量中。
“String [][] dataArray”变量包含我期望的值。示例:
dataArray[0][0] = "Joe"
dataArray[0][1] = "Smith"
dataArray[0][2] = "901-555-1212"
dataArray[1][0] = "Jane"
dataArray[1][1] = "Smith"
dataArray[1][2] = "901-555-9999"
这行不通:
Java
request.setAttribute("passedInArray", dataArray);
Javascript (inside JSP page)
var jsArray = <%= request.getAttribute("passedInArray");%>
如何将 passedInArray 的内容放入 jsArray 中?提前致谢!
最佳答案
如果您需要使用 String[][]
,则需要在服务器端遍历 passedInArray
中的行。
var dataArray = new Array();
<c:forEach var="row" items="${passedInArray}">
dataArray.push(['${row[0]}', '${row[1]}', '${row[2]}']);
</c:forEach>
另一种方法是将数组序列化为 JSON 字符串。有很好的 Java 库,例如 Jackson和 Gson可用于该工作。基本上,他们将完成与您像这样编写代码一样的工作:
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());
然后在您的 jsp 中,您只需将其声明为 javascript 变量并使用它:
var dataArray = ${passedInArray};
console.log(dataArray.length);
console.log(dataArray[0].length);
无论你怎么做,你都需要在服务器端做一些工作,将你的java数组转换成javascript可以直接使用的字符串。
关于javascript - 如何将多维数组从 Java 请求变量复制到 JSP 页面中的 Javascript 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19036522/