1

必须使用 ajax 将数组发送到 servlet,如下所示

// 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);
  }
});

在 servlet 中尝试接收数组中包含的值,如下所示

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。您似乎混淆了将带有大括号[]后缀的请求参数名称透明转换为数组的特定于 PHP 的功能,因为它是特定于标准 HTTP 的东西。因此这是绝对不正确的。HTTP 没有这样的概念。紧密构建在 HTTP 之上的 Servlet 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 回答