1

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

“String [][] dataArray”变量包含我期望的值。例子:

dataArray[0][0] = "乔"

dataArray[0][1] = "史密斯"

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

dataArray[1][0] = "简"

dataArray[1][1] = "史密斯"

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

这不起作用:

爪哇

request.setAttribute("passedInArray", dataArray);

Javascript(在 JSP 页面内)

var jsArray = <%= request.getAttribute("passedInArray");%>

如何将passedInArray的内容放入jsArray?提前致谢!

4

1 回答 1

2

如果您需要使用 a String[][],则需要遍历passedInArray服务器端的行。

var dataArray = new Array();

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

另一种方法是将您的数组序列化为 JSON 字符串。有像JacksonGson这样的优秀 Java 库可用于这项工作。基本上,它们将完成与您编写这样的代码相同的操作:

    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 可以直接使用的 String(s)。

于 2013-09-26T19:17:44.183 回答