必须使用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]);
}
我该怎么做才能解决这个问题?既然已经感谢大家的帮助了。
答案 0 :(得分: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[]");