我已经建立了一个动态表,它有一个添加按钮(添加新行)、删除按钮(删除行)和提交。
我想获取表中的所有信息(我不知道用户将添加多少行)并在其他 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 - 内部服务器错误
类型异常报告
消息内部服务器错误
描述服务器遇到一个内部错误,阻止它完成这个请求。
例外
org.apache.jasper.JasperException:PWC6033:JSP 的 Javac 编译出错
PWC6197:在 jsp 文件中的第 10 行发生错误:/dataShow.jsp PWC6199:生成的 servlet 错误:找不到符号符号:变量 fn 位置:类 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) 不适用(实际和形式参数列表长度不同)print(boolean) 不适用(实际参数列表和形式参数列表的长度不同)print(boolean) 不适用(实际参数列表和形式参数列表的长度不同)
note 异常的完整堆栈跟踪及其根本原因可在 GlassFish Server Open Source Edition 4.0 日志中找到。