1

次のようにajaxを使用して配列をサーブレットに送信する必要があります

// My array "mapTest"
var mapTest = {key1: ["a1", "a2", "a3"], key2: ["b1", "b2"]};
$.ajax({
    type: "POST",
    url: "assembles-query",
    data: {
    "mapList[]" : mapTest
  },
    error:function(){
    console.log("ERROR");
  },
    success:function(responseText){
    $("textarea[id=assembleQuery]").text(responseText);
  }
});

サーブレットでは、次のように配列に含まれる値を受け取ります

String[] mapList = request.getParameterValues("mapList[]");

配列に含まれる値をスクロールすると、常にjava.lang.NullPointerExceptionが返されます

for (int i = 0; i < mapaList.length; i++) {
     System.out.println(mapList[i]);
}

この問題を解決するにはどうすればよいですか? 皆様のご協力に感謝いたします。

4

1 に答える 1

0

これを開発している間、PHPを念頭に置いているようです。[]標準 HTTP に固有のものとして、中かっこのサフィックスが付いたリクエスト パラメータ名を配列に透過的に変換する PHP 固有の機能を混同しているようです。したがって、これは絶対に真実ではありません。HTTP にはそのような概念はありません。HTTP の上に密接に構築されたサーブレット API は、この PHP 固有の機能をまったくサポートしていません。

特定の構成では、これらの値は次のように利用できます。

String[] key1values = request.getParameterValues("mapList[][key1][]");
String[] key2values = request.getParameterValues("mapList[][key2][]");

mapList[]不器用なラッパーを取り除くと、より良いことに注意してください。

data: mapTest

これにより、値が次のように利用可能になります。

String[] key1values = request.getParameterValues("key1[]");
String[] key2values = request.getParameterValues("key2[]");
于 2013-02-11T18:35:33.770 に答える