1

要求変数に保存された String [][] として渡された多次元配列の内容を取得し、その内容を Javascript 変数に入れる必要があります。

「String [][] dataArray」変数は、私が期待する値を保持します。例:

dataArray[0][0] = "ジョー"

dataArray[0][1] = "スミス"

dataArray[0][2] = "901-555-1212"

dataArray[1][0] = "ジェーン"

dataArray[1][1] = "スミス"

dataArray[1][2] = "901-555-9999"

これは機能しません:

ジャワ

request.setAttribute("passedInArray", dataArray);

Javascript (JSP ページ内)

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

passedInArray の内容を jsArray に取得するにはどうすればよいですか? 前もって感謝します!

4

1 に答える 1

2

を使用する必要がある場合は、サーバー側で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 が直接使用できる文字列に変換するには、サーバー側で作業を行う必要があります。

于 2013-09-26T19:17:44.183 に答える