在JavaScript中创建输入隐藏类型元素数组,并在Servlet中获取值,但是java.lang.NullPointerException

在JavaScript中创建输入隐藏类型元素数组,并在Servlet中获取值,但是java.lang.NullPointerException,javascript,servlets,Javascript,Servlets,我有一个html表,我想在输入隐藏类型元素中获取第一列的所有ID以发送Servlet 像这样: var priceId[] = null; // declared as a global variable out side the functions function createPriceIdArray(){ var r = document.getElementsByTagName("tr"); var i = 0; var p = ""; while(i

我有一个html表,我想在输入隐藏类型元素中获取第一列的所有ID以发送Servlet

像这样:

var priceId[] = null; // declared as a global variable out side the functions

function createPriceIdArray(){
    var r = document.getElementsByTagName("tr");
    var i = 0;
    var p = "";
    while(i < r.length){
        p = r[i].cells[0].innerHTML;
        priceId[i] = document.createElement("input");
        priceId[i].setAttribute("type", "hidden");
        priceId[i].setAttribute("name", "priceId");
        priceId[i].setAttribute("value", p);
        i++;
    }
}
|价格|价格|清单| id |产品| id |税务|代理|费率|柜台|费率|

|2 | 1 | 1 | 0.00 | 45.00 | 46.00|

|3 | 1 | 2 | 0.00 | 35.00 | 36.00|

|4 | 1 | 3 | 5.50 | 154.00 | 180.00|

+----------+---------------+------------+------+------------+--------------+

因此,我编写了以下代码:

首先,我尝试:

var priceId = null; // declared as a global variable out side the functions

function createPriceIdArray(){

    var r = document.getElementsByTagName("tr");
    var i = 0;
    var p = "";
    while(i < r.length){

        p = r[i++].cells[0].innerHTML;
        priceId = document.createElement("input");
        priceId.setAttribute("type", "hidden");
        priceId.setAttribute("name", "priceId");
        priceId.setAttribute("value", p);
    }
}
var priceId=null;//在函数外声明为全局变量
函数createPriceDarray(){
var r=document.getElementsByTagName(“tr”);
var i=0;
var p=“”;
而(i
并提交了表单,但没有成功,因为我得到了java.lang.NullPointerException

然后我试着这样做:

var priceId[] = null; // declared as a global variable out side the functions

function createPriceIdArray(){
    var r = document.getElementsByTagName("tr");
    var i = 0;
    var p = "";
    while(i < r.length){
        p = r[i].cells[0].innerHTML;
        priceId[i] = document.createElement("input");
        priceId[i].setAttribute("type", "hidden");
        priceId[i].setAttribute("name", "priceId");
        priceId[i].setAttribute("value", p);
        i++;
    }
}
var priceId[]=null;//在函数外声明为全局变量
函数createPriceDarray(){
var r=document.getElementsByTagName(“tr”);
var i=0;
var p=“”;
而(i
在Servlet代码中:

String[] priceId;
priceId = request.getParameterValues("priceId");
out.print("<br> priceId[0] = " + priceId[0]);   
String[]priceId;
priceId=request.getParameterValues(“priceId”);
打印(“
priceId[0]=”+priceId[0]);
输出:java.lang.NullPointerException

我想创建具有隐藏类型的元素,并存储html表的一列数据,即PriceID(表中有10条记录),因此应创建10个输入隐藏元素,并将值分配给它们,然后提交表单

但我不能那样做


请对此进行指导。

您需要将新创建的隐藏元素附加到表单,以便在表单提交过程中也将它们传递给servlet。现在这种情况不会发生,您将获得NullPointerException

按如下所示更改javascript,它应该可以工作:

   var priceId; // declared as a global variable out side the functions

    function createPriceIdArray(){
        var r = document.getElementsByTagName("tr");
        var i = 0;
        var p = "";
        while(i < r.length){
            p = r[i].cells[0].innerHTML;
            priceId = document.createElement("input");
            priceId.setAttribute("type", "hidden");
            priceId.setAttribute("name", "priceId");
            priceId.setAttribute("value", p);
            document.getElementById("idForm1").appendChild(priceId);
            i++;
        }
}
var priceId;//在函数外声明为全局变量
函数createPriceDarray(){
var r=document.getElementsByTagName(“tr”);
var i=0;
var p=“”;
而(i
请注意,我已将priceId变量从数组更改为普通变量,并添加了换行符,这将向表单中添加新创建的隐藏元素。表单的id应该在javascript中匹配


让我知道这是否适用于您…

您在表单中的何处添加了隐藏字段
priceId