在JavaScript中创建输入隐藏类型元素数组,并在Servlet中获取值,但是java.lang.NullPointerException
我有一个html表,我想在输入隐藏类型元素中获取第一列的所有ID以发送Servlet 像这样:在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
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
?