我已经构建了一个动态表,它有一个添加按钮(添加一个新行),删除按钮(删除行)和提交 .
我想获取表中的所有信息(我不知道用户将添加多少行)并在其他jsp页面处理它 .
这是我到目前为止:
<script type="text/javascript">
var cb=new Array();
var fn=new Array();
var ln=new Array();
var email=new Array();
var i=1;
function addRow(tableId){
var table=document.getElementById(tableId);
var rowCount=table.rows.length;
var row=table.insertRow(rowCount);
var cell= row.insertCell(0);
var element=document.createElement("input");
element.type="checkBox";
element.name="cb"+i+"";
cell.appendChild(element);
var cell1=row.insertCell(1);
cell1.innerHTML=rowCount;
var cell2=row.insertCell(2);
var element2=document.createElement("input");
element2.type="text";
element2.name="fn"+i+"";
cell2.appendChild(element2);
var cell3=row.insertCell(3);
var element3=document.createElement("input");
element3.type="text";
element3.name="ln"+i+"";
cell3.appendChild(element3);
var cell4=row.insertCell(4);
var element4=document.createElement("input");
element4.type="email";
element4.name="email"+i+"";
cell4.appendChild(element4);
i++;
}
function delRow(tableId){
var table=document.getElementById(tableId);
var rowCount=table.rows.length;
for(i=0;i<rowCount;i++){
var row=table.rows[i];
var chkbox=row.cells[0].childNodes[0];
if(chkbox!==null && chkbox.checked===true)
{
table.deleteRow(i);
rowCount--;
i--;
for(var k=1;k<rowCount;k++){
var row=table.rows[k];
var cell=row.cells[1];
cell.innerHTML=k;
}
}
}
}
function valCk(){
}
</script>
</head>
<body>
<form name="form1" action="dataShow.jsp" method="get">
<input type='button' value="Add" onclick="addRow('tableData');">
<input type='button' value="delete" onclick="delRow('tableData');">
<input type='submit' value="submit" onclick="valCk()">
<table id="tableData" border="3">
<tr><td>chack</td><td>#</td><td>First name</td><td>Last name</td><td>Email</td></tr>
<tr><td><input type='checkbox' name='cb0'></td><td>1</td><td><input type='text' name="fn0"><td><input type="text" name="ln0"></td><td><input type="email" name="email0"></td></tr>
</table>
</form>
</body>
</html>
正如你所看到的,每个领域都有一个数组 . 我认为,如果我将所有数据放在数组中并使用查询字符串发送它会很好但不是:/例如,这是3行表的查询
jsp代码是:
<%
String rows=request.getParameter("row");
int foo = Integer.parseInt("rows");
for(int i=0;i<=foo;i++){
user u =new user();
u.fn=request.getParameter("fn[i]");
u.ln=request.getParameter("ln0[i]");
u.email=request.getParameter("email[i]");
}
%>
我收到500错误 .
HTTP状态500 - 内部服务器错误
类型异常报告
messageInternal服务器错误
description服务器遇到内部错误,导致无法完成此请求 .
例外
org.apache.jasper.JasperException:PWC6033:JSP的Javac编译出错
PWC6197:jsp文件中的行:10发生错误:/dataShow.jsp PWC6199:生成的servlet错误:找不到符号符号:变量fn location:class org.apache.jsp.dataShow_jsp
PWC6197:在jsp文件中的第29行发生错误:/dataShow.jsp PWC6199:生成的servlet错误:没有为print()方法找到合适的方法javax.servlet.jsp.JspWriter.print(java.lang.Object)是不适用(实际和形式参数列表长度不同)方法javax.servlet.jsp.JspWriter.print(java.lang.String)不适用(实际和形式参数列表长度不同)方法javax.servlet.jsp.JspWriter .print(char [])不适用(实际和形式参数列表长度不同)方法javax.servlet.jsp.JspWriter.print(double)不适用(实际和形式参数列表长度不同)方法javax.servlet .jsp.JspWriter.print(float)不适用(实际和形式参数列表长度不同)方法javax.servlet.jsp.JspWriter.print(long)不适用(实际和形式参数列表长度不同)方法javax .servlet.jsp.JspWriter.print(int)不适用(实际和形式参数列表长度不同)方法javax .servlet.jsp.JspWriter.print(char)不适用(实际和形式参数列表长度不同)方法javax.servlet.jsp.JspWriter.print(boolean)不适用(实际和形式参数列表的长度不同)
note备注GlassFish Server Open Source Edition 4 . 0日志中提供了异常的完整堆栈跟踪及其根本原因 .